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

DAX code to count orders with crossed categories

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

我如何仅使用数据透视表中的 DAX 度量 table,知道每天有多少订单同时属于 A 类和 B 类?我试过以多种方式使用 CALCULATE,但找不到正确的方法...

在此link中,我向您展示了示例的屏幕截图table1

枢轴 table 应显示:

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)

谢谢

创建一个计算不同 OrderNo 的度量。只需创建您的枢轴 table 并使用该度量。您可以使用两个表达式进行度量。

Excel 2010:

=COUNTROWS(DISTINCT(TableName[OrderNo]))

Excel 2013+

=DISTINCTCOUNT(TableName[OrderNo])

使用模型中创建的度量创建一个枢轴 table。将 Date 字段拖放到行,将 Category 字段拖放到列,将创建的度量拖放到 Values.

你会得到这样的东西:

忽略放置在枢轴 table 上的标签 excel,我的 OS 语言设置是西班牙语。


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

使用以下表达式:

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

我正在考虑使用 Excel 2010 中不支持的相交函数,但这是获得预期结果的一般方法。

这是从中生成的枢轴table。

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

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

= if( CALCULATE(DISTINCTCOUNT(mytable[Category]),filter(all(mytable),mytable[Date]=EARLIER(mytable[Date])&&mytable[OrderNo]=EARLIER(mytable[OrderNo])),or(mytable[Category]="A",mytable[Category]="B")) =2,true(),false()) The earlier function compares rows with same date and orderNo. The extra or filter, only takes into account the category A and B.

这将 return true/false 用于类别 A 和 B 的订单。 由于您不能进行常规计数,因为您有多行 为了订单。您需要一个 distinctcount。

新措施:

=CALCULATE(DISTINCTCOUNT(mytable[OrderNo]),mytable[CalcColumn01]=true())