DAX使用SUMMARIZE合并多表时Sales Data数据缺失问题咨询
问题原因
- DAX语法逻辑错误,存在递归引用。当前计算表的名称为
Table1,你在VAR中定义了临时表UserTable,但RETURN段的SUMMARIZE函数第一个参数错误填写为Table1,相当于调用尚未完成计算的目标表本身,导致计算逻辑异常,大量数据行丢失。 SUMMARIZE函数特性导致数据去重。SUMMARIZE是分组聚合函数,你将所有输出列设置为分组依据,若Sales Data中存在所有指定列值完全相同的重复行,会被自动合并为一行,对应数据丢失。- 表间关系配置问题导致行过滤。如果
Sales Data和两个维度表Storename、Country mapping的关系设置为内联接,Sales Data中关联键在维度表中无匹配值的行,会被RELATED函数自动过滤,不会进入结果表。
解决方法
- 修正表引用参数:将
SUMMARIZE的第一个参数替换为你之前定义的临时表UserTable,避免递归调用。 - 替换函数避免去重:如果需要保留
Sales Data的所有原始行,不要使用SUMMARIZE做全列分组,改用SELECTCOLUMNS筛选需要的列,该函数不会执行分组去重,会原样保留所有行。 - 调整表间联接类型:如果需要保留维度表无匹配的销售数据,将维度表和
Sales Data的关系修改为左外联接(Power BI中编辑关系时勾选“包括'Sales Data'中没有匹配行的所有行”),也可以搭配COALESCE函数给无匹配的字段设置默认值,避免行被过滤。
修正后的参考代码
Table1 = VAR UserTable = ADDCOLUMNS ( 'Sales DATA', "Store", COALESCE(RELATED('Storename'[Store info]), "未匹配门店"), "Country", COALESCE(RELATED('Country Mapping'[Country Code]), "未匹配国家"), "Region Name", COALESCE(RELATED('Country Mapping'[Region]), "未匹配区域") ) RETURN SELECTCOLUMNS ( UserTable, "Store", [Store], "Country", [Country], "district", [district], "Region Name", [Region Name], "Date", 'Sales DATA'[Date], "Category", 'Sales DATA'[Category], "Product", 'Sales DATA'[Product], "Store Code", 'Sales DATA'[Store Code], "Qty Sold", 'Sales DATA'[Qty Sold], "Product cost", 'Sales DATA'[Product cost], "Profit", 'Sales DATA'[Profit] )
内容的提问来源于stack exchange,提问作者ccha735
相关产品推荐
相关产品推荐

