PowerBI中DAX多列筛选问题:如何筛选指定州的同名城市
修复你的DAX筛选问题
原代码的核心问题是逻辑条件错误:你当前的写法是筛选“城市在指定列表 并且 州在另一个独立列表”,这会错误选出所有属于指定州的指定城市(比如如果存在密歇根州的波士顿,也会被误选),而且没有给波士顿指定马萨诸塞州(MA),完全没解决重名问题。另外原州列表里有重复值(PA、SC各出现两次),属于冗余写法。
修复方案一:多条件AND+OR组合
10_least_weather = CALCULATETABLE( Weather_records, OR( AND(Weather_records[City] = "New York", Weather_records[State] = "NY"), AND(Weather_records[City] = "Gilbert", Weather_records[State] = "AZ"), AND(Weather_records[City] = "Las Vegas", Weather_records[State] = "NV"), AND(Weather_records[City] = "Huntington Beach", Weather_records[State] = "CA"), AND(Weather_records[City] = "Boston", Weather_records[State] = "MA"), -- 重点:绑定波士顿到马萨诸塞州 AND(Weather_records[City] = "Paterson", Weather_records[State] = "NJ"), AND(Weather_records[City] = "Naperville", Weather_records[State] = "IL"), AND(Weather_records[City] = "Cedar Rapids", Weather_records[State] = "IA"), AND(Weather_records[City] = "Arvada", Weather_records[State] = "CO"), AND(Weather_records[City] = "Santa Clarita", Weather_records[State] = "CA") ) )
修复方案二:元组匹配(更简洁)
DAX支持直接匹配城市+州的组合元组,写法清晰易维护:
10_least_weather = CALCULATETABLE( Weather_records, (Weather_records[City], Weather_records[State]) IN { ("New York", "NY"), ("Gilbert", "AZ"), ("Las Vegas", "NV"), ("Huntington Beach", "CA"), ("Boston", "MA"), -- 明确指定波士顿属于马萨诸塞州 ("Paterson", "NJ"), ("Naperville", "IL"), ("Cedar Rapids", "IA"), ("Arvada", "CO"), ("Santa Clarita", "CA") } )
注意事项
- 请根据你数据集里的实际州代码调整(比如如果数据里马萨诸塞州用全称而非缩写
MA,要对应修改)。 - 方案二的元组匹配是DAX 2020及以后版本支持的写法,若使用旧版本,优先选择方案一。
内容的提问来源于stack exchange,提问作者Coderman
相关产品推荐
相关产品推荐

