如何按工单编号分组审计表并提取首个记录的团队(度量值实现)
解决方案
核心思路
要实现需求,需通过三个DAX度量值分步处理:先定位每个工单的最早审计记录,再提取该记录对应的创建团队,最后判断工单是否来自目标团队。
1. 计算每个工单的最早审计记录日期
这个度量值用于获取每个工单所有审计记录中的最早开始日期,以此确定“第一条记录”:
工单最早审计日期 = CALCULATE( MIN('工单审计事实表'[开始日期]), ALLEXCEPT('工单审计事实表', '工单审计事实表'[工单编号]) )
ALLEXCEPT会保留当前工单编号的上下文,仅计算该工单范围内的最小开始日期。
2. 判断当前行是否为工单的第一条审计记录
用于标记每条记录是否属于对应工单的第一条审计记录:
是否为第一条审计记录 = VAR 当前工单最早日期 = [工单最早审计日期] RETURN IF( '工单审计事实表'[开始日期] = 当前工单最早日期, 1, 0 )
3. 筛选源自目标团队的工单
这是最终用于过滤的度量值,将"目标团队名称"替换为你需要指定的团队名称即可:
工单源自目标团队 = VAR 第一条记录团队 = CALCULATE( MAX('工单审计事实表'[创建团队]), FILTER( ALLEXCEPT('工单审计事实表', '工单审计事实表'[工单编号]), '工单审计事实表'[开始日期] = [工单最早审计日期] ) ) RETURN IF( 第一条记录团队 = "目标团队名称", 1, 0 )
使用方法
将工单源自目标团队度量值添加到报表的筛选器面板,设置筛选条件为等于1,即可只显示第一条审计记录来自目标团队的工单数据。
注意事项
- 如果同一工单在最早日期有多条审计记录且涉及不同团队,
MAX函数会取团队名称排序后的最大值;若业务有其他规则(如取第一条出现的团队),可调整为SELECTEDVALUE或结合索引列逻辑。 - 确保
开始日期字段包含精确时间(若有),避免因日期相同但时间不同导致的第一条记录判断偏差。
内容的提问来源于stack exchange,提问作者Adrian lock
相关产品推荐
相关产品推荐

