Power BI中创建DAX度量值:提取筛选范围内总伤亡最高的城市
解决Power BI中动态获取最高伤亡城市的DAX度量值方案
以下是两种可靠的DAX写法,可根据是否需要处理并列最高的情况选择:
方案1:支持并列最高城市(用逗号分隔)
伤亡最高城市 = VAR 城市伤亡汇总 = // 按城市分组,计算当前筛选下的总伤亡 ADDCOLUMNS( VALUES('恐怖袭击数据集'[城市]), "@总伤亡", CALCULATE(SUM('恐怖袭击数据集'[伤亡人数])) ) // 提取总伤亡最高的所有城市,并用逗号连接 RETURN CONCATENATEX( TOPN(1, 城市伤亡汇总, [@总伤亡], DESC), [城市], ", " )
方案2:仅返回单个最高城市(忽略并列)
伤亡最高城市 = VAR 城市伤亡汇总 = ADDCOLUMNS( VALUES('恐怖袭击数据集'[城市]), "@总伤亡", CALCULATE(SUM('恐怖袭击数据集'[伤亡人数])) ) VAR 最高城市行 = TOPN(1, 城市伤亡汇总, [@总伤亡], DESC) RETURN MAXX(最高城市行, [城市])
关键说明
- 动态适配切片器:所有计算基于Power BI当前的筛选上下文(年份、国家/区域切片器的选择),切片器变更时会自动重新计算结果。
- 解决你之前的问题:
LOOKUPVALUE报错的核心原因是它要求查找值唯一,若存在多个城市伤亡相同会触发错误;而TOPN或FILTER能自然处理并列场景。另外表变量中的自定义列(如@总伤亡)需要用[@列名]的格式引用,这是DAX中表变量列的标准引用规则。 - 替代SUMMARIZE的优势:
ADDCOLUMNS + VALUES的组合比单纯用SUMMARIZE更直观,能避免部分上下文转换的潜在问题。
内容的提问来源于stack exchange,提问作者Daphne
相关产品推荐
相关产品推荐

