Power BI:求仅存在于Tab1的TicketId数量的DAX度量需求
仅存在于Tab1的TicketId计数DAX度量方案
需求说明
- 两个表Tab1、Tab2共享
TicketId(INT类型)字段,但表的列数不同,无法直接使用EXCEPT()对比整表 - 需要计算仅在Tab1中存在、Tab2中不存在的
TicketId数量 - 度量需支持钻取查看对应的
TicketId明细,禁止使用行计数直接相减的方式
DAX度量公式
场景1:存在独立日期维度表
Tabcross = VAR CurrentDate = MAX('DateTable'[日期]) -- 提取当日Tab1的唯一TicketId集合 VAR Tab1Tickets = CALCULATETABLE(VALUES(Tab1[TicketId]), Tab1[日期] = CurrentDate) -- 提取当日Tab2的唯一TicketId集合 VAR Tab2Tickets = CALCULATETABLE(VALUES(Tab2[TicketId]), Tab2[日期] = CurrentDate) -- 计算差集并统计数量 RETURN COUNTROWS(EXCEPT(Tab1Tickets, Tab2Tickets))
场景2:无独立日期维度表,直接使用表内日期字段
Tabcross = VAR SelectedDates = VALUES(Tab1[日期]) VAR Tab1Tickets = CALCULATETABLE(VALUES(Tab1[TicketId]), Tab1[日期] IN SelectedDates) VAR Tab2Tickets = CALCULATETABLE(VALUES(Tab2[TicketId]), Tab2[日期] IN SelectedDates) RETURN COUNTROWS(EXCEPT(Tab1Tickets, Tab2Tickets))
原理说明
VALUES(TabX[TicketId]):仅提取表中的TicketId列生成唯一值集合,规避两表列数不同的问题CALCULATETABLE():根据当前筛选的日期,过滤出对应日期的TicketId集合EXCEPT():计算两个集合的差集,得到仅在Tab1中存在的TicketIdCOUNTROWS():统计差集的行数,即为目标计数- 钻取支持:度量基于具体
TicketId的集合计算,将其添加到视觉对象后,可直接钻取查看对应的TicketId明细
验证结果
使用上述度量后,可得到预期结果:
| 日期 | Tab1 | Tab2 | Tabcross |
|---|---|---|---|
| 08.11.2022 | 1058 | 950 | 108 |
| 09.11.2022 | 1058 | 1056 | 2 |
| 22.11.2022 | 2342 | 302 | 2040 |
内容的提问来源于stack exchange,提问作者bombom
相关产品推荐
相关产品推荐

