Power BI跨两表值筛选 编写统计非计划预订用户的度量值
Power BI 非计划预订用户统计度量值实现方案
原有代码问题
- 跨表在
FILTER中直接判断Projects[ID]与Booking Data[ID]相等,未做上下文转换,会触发计算报错 - 缺少排除项目成员的匹配逻辑,无法满足统计非计划用户的需求
前置配置要求
需先在模型视图配置三张表的基础关系,否则度量值计算会出现偏差:
Projects[ID]与Booking Data[ID]配置一对多关系,Projects为“一”端Projects[ID]与Project Members[ID]配置一对多关系,Projects为“一”端
可直接运行的正确度量值
写法采用变量拆分逻辑,避免上下文错误,可读性和计算性能更优:
not Planned User = // 获取当前行上下文对应的项目ID VAR CurrentProjectID = SELECTEDVALUE(Projects[ID]) // 提取当前项目下所有提交过预订的去重用户集合 VAR BookedUserSet = CALCULATETABLE( VALUES('Booking Data'[User]), 'Booking Data'[ID] = CurrentProjectID ) // 提取当前项目下所有已登记的项目成员集合 VAR MemberSet = CALCULATETABLE( VALUES('Project Members'[User Name]), 'Project Members'[ID] = CurrentProjectID ) // 计算两个集合的差集:有预订记录但不在成员列表内的非计划用户 VAR UnplannedUserSet = EXCEPT(BookedUserSet, MemberSet) // 统计非计划用户数量,无匹配结果时返回0 RETURN COALESCE(COUNTROWS(UnplannedUserSet), 0)
注意事项
- 该度量值需创建在
Projects表下,搭配以Projects表字段为行维度的表格、矩阵视觉对象使用,可自动按项目ID匹配计算 - 如果你实际模型中
Project Members表存储用户名的字段名不是User Name,替换为对应实际字段名即可 - 若不需要无数据时返回0,可去掉外层的
COALESCE函数,直接返回COUNTROWS(UnplannedUserSet)即可
内容的提问来源于stack exchange,提问作者Scenus
相关产品推荐
相关产品推荐

