如何利用AllPatients表筛选器筛选含透视列的All_Metrics_patient_pivot表
解决方法:用AllPatients切片器筛选透视结构的指标表
问题本质
All_Metrics_patient_pivot是透视后的宽表(每个病症作为单独列),而AllPatients是行级记录(每行对应一个患者的病症),两者的病症存储结构不匹配,导致切片器的筛选上下文无法直接传递到透视表的视觉对象中。
方案1:PowerQuery重构数据结构(推荐)
透视后的宽表天生不适合多条件筛选,转成长表能和AllPatients的切片器建立自然联动:
- 打开PowerQuery编辑器,加载
All_Metrics_patient_pivot表 - 选中所有代表病症的列(如
CHF、Diabetes、HLD),点击菜单栏转换 > 逆透视列 > 逆透视其他列(保留患者ID、指标分类等非病症列) - 重命名自动生成的列:将
属性列改为病症,值列改为指标状态(对应你的红黄绿分类) - 保存并刷新数据模型,在模型视图中让新表与
AllPatients表通过患者ID+病症建立关联 - 用新长表创建右侧的指标统计视觉对象,此时AllPatients的切片器可直接筛选该对象
方案2:用度量值适配筛选上下文(无需改表结构)
如果不想修改原透视表结构,可通过度量值动态识别切片器选中的病症,统计对应列的红黄绿数量:
- 先创建度量值获取切片器选中的病症列表:
SelectedConditions = VALUES(AllPatients[病症])
- 针对红黄绿分类分别创建统计度量值(以红色为例):
RedCount = VAR SelectedCondList = [SelectedConditions] RETURN SUMX( SelectedCondList, VAR CurrentCondition = [病症] RETURN CALCULATE( COUNTROWS(All_Metrics_patient_pivot), ALLSELECTED(AllPatients), All_Metrics_patient_pivot[CurrentCondition] = "红色" ) )
- 将这些度量值拖入右侧视觉对象,替换原有静态列值,切片器选中的病症会动态触发度量值统计对应列的数量
关键注意点
- 必须确保
AllPatients与All_Metrics_patient_pivot表之间存在患者ID的关联关系,否则筛选上下文无法传递 - PowerQuery转长表是更可持续的方案,后续新增病症无需修改度量值
内容的提问来源于stack exchange,提问作者kgrafton
相关产品推荐
相关产品推荐

