DAX公式无法识别汇总表聚合列问题求助
问题原因与解决方案
问题根源
你遇到的问题核心是:CALCULATE函数无法识别VAR临时表中的聚合列。DAX规则里,CALCULATE的筛选条件只能引用数据模型中的物理列,而你用SUMMARIZE生成的tbl是临时计算表,其中的Arrests属于临时派生列,不在模型上下文范围内,因此CALCULATE无法解析tbl[Arrests] > 1这个筛选条件。
修正后的代码方案
方案1:用FILTER筛选临时表后计数
这是最直接的解决方式,先通过FILTER迭代临时表tbl,筛选出Arrests > 1的行,再用COUNTROWS统计数量:
VAR tbl = SUMMARIZE( dimEmployee, dimEmployee[wkEmployee], "Arrests", DISTINCTCOUNT(dimBookingEvent[BookingSystemId]) ) VAR individualsMultipleArrest = COUNTROWS(FILTER(tbl, [Arrests] > 1)) RETURN individualsMultipleArrest
方案2:用COUNTX直接迭代计数
也可以用COUNTX函数直接遍历临时表,仅对符合条件的行计数:
VAR tbl = SUMMARIZE( dimEmployee, dimEmployee[wkEmployee], "Arrests", DISTINCTCOUNT(dimBookingEvent[BookingSystemId]) ) VAR individualsMultipleArrest = COUNTX(tbl, IF([Arrests] > 1, 1, BLANK())) RETURN individualsMultipleArrest
额外说明
- 确保
dimEmployee和dimBookingEvent之间存在正确的关联关系,否则DISTINCTCOUNT(dimBookingEvent[BookingSystemId])无法准确计算每个员工的逮捕次数。 - 两种方案本质都是直接操作临时表,避开CALCULATE对模型列的依赖,因此能正确识别临时列
Arrests。
内容的提问来源于stack exchange,提问作者Ken Kelemen
相关产品推荐
相关产品推荐

