如何通过切片器(slicer)值间接筛选Capitals表中关联同一Current_Name的所有Prior_Name
解决Power BI切片器选择Prior_Name后展示同Current_Name的所有Prior_Name问题
你的需求很明确——通过选择去重后的Prior_Name切片器,展示该Prior_Name所属Current_Name对应的所有历史Prior_Name。你之前的DAX思路方向是对的,但问题在于切片器基于Prior_Name时,直接用SELECTEDVALUE(Capital[Current_Name])无法正确关联到选中项对应的Current_Name,我们需要调整逻辑步骤:
步骤1:创建去重的Prior_Name切片器数据源
首先确保切片器的选项是无重复的,先创建一个计算表:
Distinct_Prior_Names = DISTINCT(Capitals[Prior_Name])
然后用这个表的Prior_Name字段创建切片器,这样就能得到你需要的无重复选项列表。
步骤2:方案1 - 创建计算表展示完整列表
如果想通过表格可视化展示所有符合条件的Prior_Name,创建下面的计算表:
Related_Prior_Names = VAR SelectedPrior = SELECTEDVALUE(Distinct_Prior_Names[Prior_Name]) // 通过选中的Prior_Name找到对应的Current_Name VAR TargetCurrentName = CALCULATE(VALUES(Capitals[Current_Name]), Capitals[Prior_Name] = SelectedPrior) // 筛选出该Current_Name下的所有Prior_Name记录 RETURN FILTER(Capitals, Capitals[Current_Name] = TargetCurrentName)
把这个计算表的Prior_Name字段拖入可视化表格,当你在切片器选择某个值(比如Astana),表格就会自动显示Nur-Sultan、Astana、Almaty这三个相关Prior_Name。
步骤3:方案2 - 创建度量值生成逗号分隔的文本列表
如果想用卡片或文本框展示成紧凑的字符串列表,创建这个度量值:
Prior_Names_Text_List = VAR SelectedPrior = SELECTEDVALUE(Distinct_Prior_Names[Prior_Name]) IF( ISBLANK(SelectedPrior), "请选择一个Prior_Name", VAR TargetCurrentName = CALCULATE(VALUES(Capitals[Current_Name]), Capitals[Prior_Name] = SelectedPrior) VAR RelatedNames = CALCULATE(VALUES(Capitals[Prior_Name]), Capitals[Current_Name] = TargetCurrentName) RETURN CONCATENATEX(RelatedNames, [Prior_Name], ", ") )
将这个度量值拖入卡片可视化,选中切片器选项后就会显示类似Nur-Sultan, Astana, Almaty的结果,未选中时还会提示用户选择。
关键逻辑说明
- 我们先通过
SELECTEDVALUE获取切片器选中的Prior_Name - 再用
CALCULATE+VALUES关联找到对应的Current_Name(因为你的数据里每个Prior_Name只对应一个Current_Name,所以用VALUES能安全拿到唯一值) - 最后基于这个Current_Name筛选出所有相关的Prior_Name记录或值
内容的提问来源于stack exchange,提问作者Pat
相关产品推荐
相关产品推荐

