Power BI:如何基于客户级去年年末差异率计算符合条件的差异总和
DAX公式调整方案
问题根源
你当前使用的公式中,去年年末[Variance %]的计算逻辑是全局聚合的,没有绑定到单个客户维度,因此判断条件是全局统一生效的,只有所有客户整体的[Variance %]满足<=-1的要求时才会返回数值,和你需要的按单个客户判断的逻辑不符。
调整后公式
Term Reductions = VAR _date = MAX('Date-Processing'[Date]) VAR _month = MONTH(_date) VAR _prior_year_end_date = IF(_month=1,EOMONTH(_date,-13),EOMONTH(_date,-_month)) RETURN SUMX( VALUES(Customer[CustomerName]), -- 逐客户计算去年年末的Variance % VAR _customer_prior_year_variance_pct = CALCULATE( [Variance %], FILTER(ALL('Date-Processing'),'Date-Processing'[Date]=_prior_year_end_date), FILTER(AccountLoan,AccountLoan[RiskRatingCategoryCode]<>"S" && AccountLoan[RiskRatingCategoryCode]<>"W") ) -- 逐客户判断是否符合条件,符合则返回对应Variance RETURN IF(_customer_prior_year_variance_pct <= -1, [Variance], BLANK()) )
调整说明
- 将
[Variance %]的计算逻辑放入SUMX对客户的迭代过程中,实现单个客户维度的独立计算 - 每个客户单独判断阈值条件,只要单个客户满足要求就计入汇总,不受整体
[Variance %]结果影响 - 移除了冗余的
SUMMARIZE函数,直接迭代客户维度列表,计算逻辑更简洁,执行效率更高
补充说明
如果你需要统计的是客户去年年末的[Variance]而非当前上下文的[Variance],可以将返回值部分的[Variance]替换为以下代码即可:
CALCULATE([Variance], FILTER(ALL('Date-Processing'),'Date-Processing'[Date]=_prior_year_end_date))
内容的提问来源于stack exchange,提问作者Yash
相关产品推荐
相关产品推荐

