Power BI DAX统计客户首存前通话数 总计行结果异常排查
问题根因
你当前的度量值在客户粒度行计算正确、总计行返回错误值,核心是DAX上下文计算逻辑导致的:
- 客户粒度行的上下文里,
MAX(Accounts[FDP_Date])能正确取到当前行对应客户的FDP日期,筛选条件生效,计算结果正确。 - 总计行没有逐客户的行上下文,
MAX(Accounts[FDP_Date])会直接取当前筛选范围内所有客户FDP日期的全局最大值,筛选条件变成「所有通话时间早于全局最晚FDP日期的已接听来电」,会把不属于对应客户FDP前的通话也统计进来,最终返回536的错误结果。
另外补充:如果两表基于AccountNo的1对多关系本身是激活状态,度量值里的USERELATIONSHIP语句是多余的,只有当该关系为未激活状态时才需要保留。
修复方案
通过迭代函数逐客户执行计算逻辑,再对单客户结果求和,保证单行和总计行计算逻辑一致:
ACC_Calls_2_FDP = SUMX ( VALUES ( Accounts[AccountNo] ), -- 遍历当前筛选范围内的所有唯一客户 VAR Curr_FDP_Date = CALCULATE ( MAX ( Accounts[FDP_Date] ) ) -- 取当前迭代客户的专属FDP日期 RETURN CALCULATE ( COUNTROWS ( PhoneCalls ), PhoneCalls[disposition] = "ANSWERED", PhoneCalls[calldate] <= Curr_FDP_Date, // 若两表AccountNo字段的关系默认激活,可删除下面这行 USERELATIONSHIP ( Accounts[AccountNo], PhoneCalls[AccountNo] ) ) )
修复后总计行会自动对每个客户的计算结果做加总,返回你预期的14的正确汇总值。
内容的提问来源于stack exchange,提问作者aj_bk
相关产品推荐
相关产品推荐

