0%

ALLEXCEPT 解释

FODOfCustomer = 
CALCULATE (
    MIN ( 'ECDatas SSDTotal'[BillingDate] ),
    ALLEXCEPT( 'ECDatas SSDTotal', 'ECDatas SSDTotal'[Customer] )
)
SNVOfNewCustomer = 
CALCULATE (
     [SumNetValue],FILTER('ECDatas SSDTotal' , YEAR( [FODOfCustomer] ) = 2019 )
)

官方说明:ALLEXCEPT(返回表中除受指定的列筛选器影响的那些行之外的所有行)

解释:
ALLEXCEPT(Table,column)
Table是要筛选的表,Column是要接受筛选的列,除了Column之外的列,均不接受筛选。

例如上面例子中:
[FODOfCustomer]中对’ECDatas SSDTotal’[Customer]进行了保留上下文筛选,那么,当[SNVOfNewCustomer]调用[FODOfCustomer]的时候,[SNVOfNewCustomer]中对Year的筛选,就不会影响[FODOfCustomer]。

[FODOfCustomer]是在计算客户第一次下单的时间,假设[SNVOfNewCustomer]中 “Year=2019”,如果[FODOfCustomer]没有【 ALLEXCEPT( ‘ECDatas SSDTotal’, ‘ECDatas SSDTotal’[Customer] )】,最后计算出来的就是2019年客户的第一次下单时间。 因为有了 ALLEXCEPT()函数,所以计算出来的结果依然是所有时间内的第一次下单。