DAX-计算分组的不同行

时间:2018-11-28 00:10:47

标签: group-by count distinct dax summarize

我是DAX的新手,所以我不确定我想做的事是否可能。

  • 我需要对分析模型中的行进行计数(带有一些过滤后的数据)。这些行是发票。
  • 对于发票的每个移动,我的分析模型都有几行用于同一张发票。
  • 此模型已具有一个“度量”,用于汇总所有运动的值。这是一种简单的措施INVOICED_DETAIL:=SUM('Invoicing Detail'[QTY])

我现在正在使用的DAX查询如下:

EVALUATE 
SUMMARIZECOLUMNS (
// Generic filter
FILTER ('Business Unit', 'Business Unit'[Center] = "Alabama" ),

"Count", CALCULATE (
    DISTINCTCOUNT ( 'Invoicing Detail'[Reference] ),
    // Specific filters, usually parameters
    'Time'[Month] = VALUE ("200808"),
    'Product Family'[Product Family] <> VALUE ("OTHERS")
    )
)

此DAX查询返回15000行(实际上,它返回具有该值的单列,没关系)。但是,当我使用完全相同的筛选器通过Excel中的PowerPivot表浏览模型时,得到14000行。为什么会有这种差异?我假设这是因为几张发票都有折扣。我有3次发票 A123

Reference|QTY
---------+-----
A123     |1000
A123     |300
A123     |-300
B123     |400
B123     |200
C123     |500

一个数量为1000的商品,第二个数量为300的商品,第三个数量为(-300)的商品,折扣。当然, INVOICED_DETAIL 度量返回正确的值1000。但是,当我需要计数发票时,这些类型的行被排除在外了。它不计算行数与300和-300,他们互相抵消。尽管该度量返回了值,但我仍在计算一张发票,当我希望它可以计数 3 时。我需要查询以返回该 14000 值。

如果我的假设是正确的,我将需要对我的CALCULATE进行额外的过滤,类似于

"Count", CALCULATE (
    DISTINCTCOUNT ( 'Invoicing Detail'[Reference] ),
    'Time'[Month] = VALUE ("200808"),
    'Product Family'[Product Family] <> VALUE ("OTHERS"),
    // New Filter needed
    INVOICED_DETAIL <> 0
    )

但是我已经知道您不能在这种情况下使用指标作为过滤器。

我也倾向于认为我的报表中需要一个分组条款来对发票进行分组,例如

EVALUATE 
SUMMARIZECOLUMNS (
FILTER ('Business Unit', 'Business Unit'[Center] = "Alabama" ),
// grouping clause
GROUPBY('Invoicing Detail', 'Invoicing Detail'[Reference]),

但是我做了一个google-research,DAX中的GROUPBY子句与我在SQL中使用它的方式完全不同(或者我不太清楚,这是一个很大的可能性)

解决此问题的正确方法是什么?有人对到达那里有想法吗? 我是Marco Russo博客的忠实拥护者,但找不到与我目前完全相同的情况(可能是因为我是DAX的新手)

谢谢!

卢克。-

0 个答案:

没有答案