DAX代码用于计算具有交叉类别的订单

时间:2016-05-25 14:43:56

标签: excel powerpivot dax

我有一个商店出售的单位清单。每行描述日期,订单号,单位数和类别(本例中为A和B)。

如何在数据透视表中使用DAX指标,了解每天A类和B类的订单数量是多少?我曾尝试过以多种方式使用CALCULATE,但我无法找到正确的方法......

在此链接中,我将向您展示示例表1

的屏幕截图

数据透视表应显示:

25/05/2016  3 (orders 100, 104 and 105 have units from categories A and B)  
26/05/2016  1 (order 200 has units from categories A and B)

由于

2 个答案:

答案 0 :(得分:1)

创建一个计算不同OrderNo的度量。只需创建您的数据透视表并使用该度量。您可以为度量使用两个表达式。

Excel 2010:

=COUNTROWS(DISTINCT(TableName[OrderNo]))

Excel 2013 +

=DISTINCTCOUNT(TableName[OrderNo])

使用模型中创建的度量创建数据透视表。将Date字段拖放到行,将Category字段拖放到列,将创建的度量拖放到Values

你会得到这样的东西:

enter image description here

忽略放置在数据透视表中的标签,我的操作系统语言设置为西班牙语。

更新:根据您的评论,您需要具有A类和B类的不同OrderNo。

使用以下表达式:

=CALCULATE (
    COUNTA (TablaName[OrderNo]),
    CALCULATETABLE ( VALUES ( TablaName[OrderNo] ), TablaName[Category] = "A" ),
   TablaName[Category] = "B"
)

我在考虑使用Excel 2010不支持的交叉功能,但这是获得预期结果的一般方法。

这是从它生成的数据透视表。

enter image description here

希望这就是您所寻找的,如果有帮助请告诉我。

答案 1 :(得分:0)

使用以下公式创建计算列:

  

= if(   CALCULATE(DISTINCTCOUNT(mytable的[类别]),过滤器(所有(MYTABLE),MYTABLE [日期] = EARLIER(mytable的[日期])及;&安培; MYTABLE [OrderNo] = EARLIER(mytable的[OrderNo])),或(MYTABLE [类别] =" A",MYTABLE [类别] =" B&#34))   = 2,真(),假())   较早的函数比较具有相同日期和orderNo的行。   额外或过滤器仅考虑类别A和B.

这将在类别为A和B的订单上返回true / false。 因为你不能进行常规计数,因为你有多行 为了订购。你需要一个distinctcount。

新措施:

  

= CALCULATE(DISTINCTCOUNT(mytable的[OrderNo]),MYTABLE [CalcColumn01] =真())