我是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的新手)
谢谢!
卢克。-