基于DAX中的度量的条件不同计数

时间:2015-04-02 22:21:49

标签: ssas dax ssas-tabular bism

我正在尝试使用DAX执行此操作,无法获得正确的不同计数...

AccountID   OrderDate   Product     SalesAmount DiscountAmount
1023        Nov-14      Product001  $0          $5.00
1045        Nov-14      Product001  $30.00  $10.00
1023        Nov-14      Product002  $1.00       $0  
1089        Nov-14      Product001  $0          $5.00
2045        Nov-14      Product001  $50.00  $25.00
1045        Nov-14      Product001  $(30.00)    $0 

Q1。我如何计算总销售额为0美元的不同客户(答案是2,1045,1089) - 请参阅此处我想忽略1023,因为该帐户的总销售额是不是0美元。

我尝试制作一项措施:

TotalCustomers:=CALCULATE(DISTINCTCOUNT(Table1[AccountID]), 'Table1')

然后补充说:

ZeroCustomers:=CALCULATE([TotalCustomers], FILTER('Table1', [Sum of SalesAmount]<>0))

但是帐户1023被计算在内,而ZeroCutomers

我得到了'3'

Q2。如何为总销售额为0美元(答案15美元)的客户添加DiscountAmount

这是对Q1的延伸 - 一旦我弄清楚Q1 - 我可能会想出这个。

我的另一个选择是创建一个已经由AccountID汇总的新表 - 但之后我将无法使用切片器,因为我仍然想要切片,比如说Product和其他Dimensions。

任何帮助将不胜感激!

谢谢!

2 个答案:

答案 0 :(得分:0)

我可能已经弄明白了:

<强> Q1

ZeroCustomers:=COUNTROWS (
    FILTER (
        ADDCOLUMNS (
            VALUES ( Table1[AccountID] ),
            "TotalSalesAmount", CALCULATE ( SUM ( [SalesAmount] ) )
        ),
        [TotalSalesAmount] = 0
    )
)

<强> Q2

ZeroCustomerDiscount:=CALCULATE(SUM([DiscountAmount]),
    FILTER (
        ADDCOLUMNS (
            VALUES ( Table1[AccountID] ),
            "TotalSalesAmount", CALCULATE ( SUM ( [SalesAmount] ) )
        ),
        [TotalSalesAmount] = 0
    )
)

如果你有更好的方法来完成同样的事情,请发表评论/回复。 希望这有助于其他人!

答案 1 :(得分:0)

怎么样:

ZeroCustomers:=CALCULATE(DISTINCTCOUNT(Table1[AccountID]), ALL(Table1), [Sum of SalesAmount]<>0))

ZeroCustomersDiscount:=CALCULATE(SUM([DiscountAmount]), ALL(Table1), [Sum of SalesAmount]<>0))

我认为由于DAX如何处理过滤器和分组,您之前的尝试无效。我希望我能给你一个更详细的解释,但我还在学习。