DAX中SUMMARIZE构建计算表无法添加WODetail关联表列的问题
DAX SUMMARIZE函数跨表引用列报错问题
问题场景
数据模型关联关系如下:
MainSI表与WODetail表为**1:M(一对多)**关联,MainSI处于关系一端MainSI表与EmployeeTable表存在激活关联
当前使用如下DAX构建计算表Jobs时运行正常:
Jobs = SUMMARIZE( 'MainSI Table', 'MainSI Table'[Market], 'MainSI Table'[Region], 'MainSI Table'[EmployeeId], 'EmployeeTable'[Business] )
但尝试在SUMMARIZE参数中添加任意WODetail表列时,会触发「无法找到所选WODetail表列」的报错,即使两表已经配置了一对多关系。
报错根因
这个问题是SUMMARIZE函数的列引用规则导致的:
当你指定某张表作为SUMMARIZE的第一参数(基础表)时,函数仅支持直接引用两类列作为分组列:
- 基础表自身的所有列
- 与基础表存在关联、且处于关系**「一」端**的表的列(属于基础表的扩展表范围)
当前场景里,EmployeeTable处于和MainSI关联的一端,所以可以正常引用;但WODetail处于和MainSI关联的多端,不在MainSI的扩展表范围内,直接引用就会触发报错。
解决方案
你可以任选以下两种方式修复:
方案1:更换SUMMARIZE的基础表
将基础表从一端的MainSI Table换成多端的WODetail表。多端表的扩展表会覆盖所有关联的一端表列,此时三张表的列都可以正常引用:
Jobs = SUMMARIZE( 'WODetail', 'MainSI Table'[Market], 'MainSI Table'[Region], 'MainSI Table'[EmployeeId], 'EmployeeTable'[Business], 'WODetail'[需要引用的目标列] // 直接添加WODetail列即可正常运行 )
方案2:用SUMMARIZECOLUMNS替代SUMMARIZE
SUMMARIZECOLUMNS不依赖基础表的扩展表范围,只要模型中存在激活的关联关系,就可以直接跨表引用任意关联表的列作为分组维度:
Jobs = SUMMARIZECOLUMNS( 'MainSI Table'[Market], 'MainSI Table'[Region], 'MainSI Table'[EmployeeId], 'EmployeeTable'[Business], 'WODetail'[需要引用的目标列] // 直接添加WODetail列即可正常运行 )
注意:SUMMARIZECOLUMNS会自动过滤掉度量值返回空值的行,和SUMMARIZE默认保留所有空行的逻辑有细微差异,可根据业务需求选择。
内容的提问来源于stack exchange,提问作者Randy Minder
相关产品推荐
相关产品推荐

