DAX计算度量不受表中行的影响

时间:2018-12-05 23:29:35

标签: powerbi dax

我是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

预先感谢

1 个答案:

答案 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,而不是在完成过滤后尝试将其合并。