首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DAX查询countdistinct

DAX查询countdistinct
EN

Stack Overflow用户
提问于 2020-01-16 04:22:56
回答 2查看 52关注 0票数 0

我想在DAX中计算与以下内容不同的内容。

我有一个包含列和示例的orders表:

代码语言:javascript
复制
OrderNumber  Customer Vendor   OrderTaken   OrderDelivery   OrderBilling    Qty   Price
1              1        V1     2018/12/01    2019/01/10     2019/01/10       1      1
2              10       V1     2019/01/04    2019/01/07     2019/01/07       1      1
3              100      V2     2019/01/02    2019/01/04     2019/01/06       1      1
4              100      V2     2019/01/02    2019/07/01     2019/07/01       1      1
(              10       V1     2020/01/04    2020/01/07     2020/01/07       1      1

日期格式为yyyy/MM/dd

我想计算一下价格和每个供应商从1月1日到1月10日开单的不同客户数量,以及1月10日之前没有开单的订单数量。

我能够计算价格的总和,一个是开单订单,一个是订单,但我需要计算不同客户的数量,即使有一个订单开单,还有一个还没有开单。

对于我所做的总和:

代码语言:javascript
复制
EVALUATE
SUMMARIZECOLUMNS (
    'orders'[vendor],
    "Billed", CALCULATE (
        SUM ( 'Orders'[Price] ),
        'orders'[OrderBilling] >= VALUE ( "01/01/2019" ),
        'orders'[OrderBilling] <= VALUE ( "10/01/2019" )
    ),
    "NotBilled", CALCULATE (
        SUM ( 'ZBW00001'[CANET(-DATION)] ),
        'orders'[OrderBilling] > VALUE ( "20190110" ),
        'orders'[OrderTaken]   <= VALUE ( "20190110" )
    )
)

我得到的结果是

供应商向NotBilled V1 2 V2 1 1收费

期望的输出是具有两个时期的不同客户的数量:

代码语言:javascript
复制
   'orders'[OrderBilling] >= VALUE ( "01/01/2019" ),
   'orders'[OrderBilling] <= VALUE ( "10/01/2019" )
and
    'orders'[OrderBilling] > VALUE ( "20190110" ),
    'orders'[OrderTaken]   <= VALUE ( "20190110" )

如果我使用与SUM相同的方法,我将得到

代码语言:javascript
复制
Vendor     NbcustomerBilled        NbCustomerNotBilled
V1            2
V2            1                           1

而不同用户的数量将是4,这不是事实,应该是3。

期望输出

代码语言:javascript
复制
Vendor  NbCustomerDistinct SumSales
  V1              2              2           ( Two customers 1 and 10)
  V2              1              2           ( Only one customer 100 )

我不知道我怎么才能得到它。如果有人能帮我的话。提前感谢

EN

回答 2

Stack Overflow用户

发布于 2020-01-16 19:37:06

好吧,不确定您想要如何计算SumSales,但我猜您可以通过扩展以下代码来了解如何添加该列:

代码语言:javascript
复制
NewTable = 
SUMMARIZE(
    'orders';
    [vendor];
    "NbCustomerDistinct"; DISTINCTCOUNT('orders'[Customer])
    /*"SumSales = Add calculation to get SumSales here*/
)
票数 0
EN

Stack Overflow用户

发布于 2020-01-20 21:33:23

我找到了一种不确定是不是最好的方法,

代码语言:javascript
复制
EVALUATE 
VAR InternalTable = 
    SUMMARIZECOLUMNS( 
        'orders'[vendor],
        "Total",CALCULATE(SUM('Orders'[Price]),
               'orders'[OrderBilling] >= VALUE ( "01/01/2019" ),
               'orders'[OrderBilling] <= VALUE ( "10/01/2019" ))
            +CALCULATE(SUM('Orders'[Price]]),
               'orders'[OrderBilling] > VALUE ( "10/01/2019" ),
                'orders'[OrderTaken]   <= VALUE ("10/01/2019" ))
            )

Return
GROUPBY(
    InternalTable,
    'orders'[vendor],
    "Total_Sales",SUMX(CURRENTGROUP(),[Total]),
    "Current_Clients",COUNTX(CURRENTGROUP(),[Total])
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59759024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档