Power BI添加branch切片器后New Customers度量值计算异常求助
问题根因
你的度量值逻辑存在筛选上下文处理错误,核心问题在PriorCustomer的计算环节:
- 代码中使用
ALL('Customer')会清除Customer表的所有筛选上下文,当添加Branch切片器后,当前选中的分支筛选也会被一并清除,导致历史客户统计是跨所有分支计算的 - 因此Nike1月在SIN分支出现后,2月筛选TYO分支时,历史客户集合已经包含Nike,会被
EXCEPT函数排除,无法统计为新客户 - 未添加分支切片器时是全分支维度统计客户,逻辑不会暴露异常,和你按分支独立判定新客户的业务规则不匹配。
修正代码
将全表清除筛选的写法替换为仅移除ETD日期列筛选、保留分支等外部切片器筛选的逻辑,修正后度量值如下:
New Customers = // 按分支+年月维度识别6个月窗口期新客户 VAR CurrentETDStart = MIN('Customer'[ETD]) VAR LookbackDuration = Parameter[Parameter Value] VAR CurrentScopeCustomers = VALUES(Customer[Client]) VAR HistoryCustomers = CALCULATETABLE( VALUES(Customer[Client]), REMOVEFILTERS('Customer'[ETD]), // 仅清除ETD列的时间筛选,保留Branch等其他维度的筛选 'Customer'[ETD] > CurrentETDStart - LookbackDuration, 'Customer'[ETD] < CurrentETDStart ) RETURN COUNTROWS(EXCEPT(CurrentScopeCustomers, HistoryCustomers))
如果你使用的Power BI版本过低不支持
REMOVEFILTERS函数,可以将REMOVEFILTERS('Customer'[ETD])替换为ALL('Customer'[ETD]),效果一致,不要使用全表ALL即可。
逻辑说明
修正后计算指定分支指定月份的历史客户时,只会统计同分支下、当前月份之前6个月窗口内出现过的客户,不会把其他分支的历史客户纳入排除范围,Nike在2月TYO分支会被正确判定为新客户,符合业务规则。
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

