PowerBI 通过数据建模实现高级筛选 创建关联下拉框的问题求助
问题错误原因排查
你现有代码的核心问题有两个:
- 新增阶段筛选器时重复使用了
calcProjectNameFilter作为表名,直接覆盖了原有项目维度表,导致逻辑混乱 - 代码中引用了
ALLSELECTED(calcProjectNameFilter),出现了循环依赖,自然无法生效
正确实现方案
你可以通过独立维度表+模型关联的方式实现级联筛选,性能和稳定性都更高,操作步骤如下:
1. 保留原有项目维度表
你之前写的项目名称筛选器逻辑完全正确,无需修改,保留该计算表即可:
calcProjectNameFilter = DISTINCT( UNION( VALUES('Vani_Trends actual'[Project Name]), VALUES('Vani_Trends2 - planned'[Project Name]) ) )
你之前建模的维度表结构参考:
2. 新建项目-阶段关联维度表
新建计算表,同时取出两张事实表中所有项目和阶段的对应关系,去重后作为阶段的维度表:
calcPhaseFilter = DISTINCT( UNION( SELECTCOLUMNS('Vani_Trends actual', "Project Name", [Project Name], "Phase Name", [Phase Name]), SELECTCOLUMNS('Vani_Trends2 - planned', "Project Name", [Project Name], "Phase Name", [Phase Name]) ) )
3. 配置模型关联关系
进入模型视图,按以下规则建立表关联:
calcProjectNameFilter[Project Name]关联两张事实表的Project Name字段,筛选方向为单方向(维度表筛选事实表)calcProjectNameFilter[Project Name]关联calcPhaseFilter[Project Name]字段,筛选方向设为双向calcPhaseFilter[Phase Name]关联两张事实表的Phase Name字段,筛选方向为单方向
4. 配置筛选器属性
把两个维度表的对应字段加入筛选器面板,分别勾选筛选器设置中的「仅显示相关值」选项,即可实现选择项目后,阶段筛选器自动过滤出该项目下的可选阶段。
内容的提问来源于stack exchange,提问作者DarkFantasy
相关产品推荐
相关产品推荐

