在Power BI中使用DAX公式基于两表创建差异列与差异表
使用DAX创建包含两表Count列差值的Table 3
假设Table 1和Table 2拥有共同的分组/匹配列(例如Category),用于对齐两行的Count数值。以下是两种常用的DAX实现方案:
方案1:兼容无关联表,覆盖所有分组项
适用于两表未建立关系,或需要包含两表所有唯一分组项的场景:
Table 3 = VAR AllUniqueGroups = UNION( DISTINCT('Table 1'[Category]), DISTINCT('Table 2'[Category]) ) RETURN ADDCOLUMNS( AllUniqueGroups, "Table1_Count", COALESCE(CALCULATE(COUNT('Table 1'[Count]), 'Table 1'[Category] = EARLIER([Category])), 0), "Table2_Count", COALESCE(CALCULATE(COUNT('Table 2'[Count]), 'Table 2'[Category] = EARLIER([Category])), 0), "Count_Difference", COALESCE(CALCULATE(COUNT('Table 1'[Count]), 'Table 1'[Category] = EARLIER([Category])), 0) - COALESCE(CALCULATE(COUNT('Table 2'[Count]), 'Table 2'[Category] = EARLIER([Category])), 0) )
AllUniqueGroups:合并两表的所有唯一分组值,避免遗漏任何一方的项COALESCE:处理某分组仅存在于其中一张表的情况,将缺失的Count值视为0Count_Difference:直接计算两表Count值的差值(Table1 - Table2)
方案2:基于已建立关系的简化写法
如果两表已通过匹配列建立一对一/一对多关系,可以使用更简洁的公式:
Table 3 = ADDCOLUMNS( 'Table 1', "Table2_Count", COALESCE(RELATED('Table 2'[Count]), 0), "Count_Difference", 'Table 1'[Count] - COALESCE(RELATED('Table 2'[Count]), 0) )
RELATED:通过已建立的关系,直接获取Table2中对应行的Count值COALESCE:处理Table1行无对应Table2行的情况,避免出现空值错误
内容的提问来源于stack exchange,提问作者Freaky_foxx
相关产品推荐
相关产品推荐

