我是DAX的新手,在计算独立于所有行的所有行中必须相似的值时遇到了一些麻烦。我将更详细地解释:
我必须计算某个程序的一定采用率:
Sales in Program/Total Sales
(这仅包括有权使用该程序的客户。总销售额可能包括该程序执行的销售额或不包括该程序执行的销售额)
该计划未加入某些客户,我想计算将该客户加入该计划的影响:
# of Sales in Program/# of Total Sales - # of Sales in Program/(# of Total Sales + # of Customer sales)
客户销售数量当然不在计划范围内。所有客户的采用计算(程序中的销售数量/总销售数量)必须相同,唯一根据行更改的数据是客户销售数量。我的数据是事务性的,就像这样:
Customer Order Date Onboarded Program
01 001 01-01-2018 Yes In Program
01 002 01-01-2018 Yes Not In Program
03 003 01-01-2018 No In Program
到目前为止,我有:
Adoption = CALCULATE( COUNT(Adoption[Order]),
FILTER(Adoption, Adoption[Program] = "In Program" &&
Adoption[Onboarded] = "Yes")
/
CALCULATE( COUNT(Adoption[Order])
FILTER(Adoption, Adoption[Onboarded] = "Yes"))
我尝试使用All
,但仍然受行影响。如何使所有行的采用率相同?
到目前为止,我的输出是这样的(注意:现在我只是在计算方程的第一部分):
Customer Adoption
01 0.5
02 0.2
03 0.7
但是,所有人都应该相同:
Customer Adoption
01 0.4
02 0.4
03 0.4
预先感谢
答案 0 :(得分:0)
我无法复制您的值,并且您的Adoption
度量值似乎分别在第三行和第五行的末尾缺少)
和,
。
但是,如果您想在此处使用ALL
,则它需要在FILTER
函数的内部:
Adoption =
CALCULATE (
COUNT ( Adoption[Order] ),
FILTER (
ALL ( Adoption ),
Adoption[Program] = "In Program"
&& Adoption[Onboarded] = "Yes"
)
)
/ CALCULATE (
COUNT ( Adoption[Order] ),
FILTER (
ALL ( Adoption ),
Adoption[Onboarded] = "Yes"
)
)
无法正常运行的原因
CALCULATE(COUNT(...), ALL(Adoption), FILTER(Adoption, ...))
是CALCULATE
的参数已使用AND逻辑合并,并且FILTER
函数已经是ALL(Adoption)
的适当子集,因为作为第一个参数传递的表已经在本地过滤器上下文中评估。也就是说,Customer
号是该表上的过滤器,除非您将其删除。为了删除该过滤器上下文,您需要在该级别应用ALL
,而不是在完成过滤后尝试将其合并。