如何在Power BI中利用主数据查询过滤所有模型查询的目标ID数据?
实现Power BI仅分析主数据内目标ID对应数据的解决方法
方法一:调整表关系的筛选方向
这是最直接的模型级解决方案,通过关系筛选自动排除非目标数据:
- 进入Power BI的数据视图,点击顶部「管理关系」
- 找到主数据表(目标ID表)和业务表的关联关系,点击「编辑」
- 将筛选方向设置为单向(从主数据到业务表),保存设置
设置完成后,业务表只会返回主数据表里存在的ID对应的记录,非目标ID的数据会被直接排除,不会在仪表盘中显示空白项。
方法二:在查询编辑器中提前过滤数据
如果想在数据加载阶段就砍掉非目标数据,减少模型体积:
- 打开查询编辑器,选中需要过滤的业务表
- 点击「合并查询」,选择主数据表,用产品ID作为关联字段
- 展开合并后的列,选择「仅保留匹配的行」(只保留主数据表中有对应ID的记录)
- 删除合并产生的辅助列,加载数据到模型
这种方式从源头过滤,后续可视化不会出现任何非目标ID的痕迹。
方法三:用DAX度量值在可视化层筛选
如果需要保留完整数据模型,仅在特定可视化组件中过滤:
创建度量值时加入筛选条件,比如计算目标产品的销售额:
目标产品销售额 = CALCULATE(SUM('业务表'[销售额]), '业务表'[产品ID] IN VALUES('主数据表'[产品ID]))
或者利用关系判断:
目标产品销售额 = CALCULATE(SUM('业务表'[销售额]), NOT(ISBLANK(RELATED('主数据表'[产品ID]))))
用这类度量值做可视化,只会展示主数据内ID对应的数值,不会出现非目标ID的空白项。
内容的提问来源于stack exchange,提问作者Théa De Baets
相关产品推荐
相关产品推荐

