Power BI:如何创建可通过矩阵传递列参数的通用度量值?
实现动态列的通用度量值方案
完全可以实现你要的效果,最适配Power BI矩阵视觉的方案是使用字段参数来动态绑定目标列,再配合编写通用度量值实现自定义计算,具体步骤如下:
1. 创建字段参数
通过字段参数把需要复用的列(A、B、C、D、E)统一管理:
- 点击顶部「建模」选项卡 → 「新建参数」→ 选择「字段参数」
- 在弹出的窗口中,将数据表中的A、B、C、D、E列添加到参数中,命名参数为
MetricColumns(可自定义)
生成的参数DAX代码类似(系统自动生成,无需手动修改):
MetricColumns = { ("A", NAMEOF('Table'[A]), 0), ("B", NAMEOF('Table'[B]), 1), ("C", NAMEOF('Table'[C]), 2), ("D", NAMEOF('Table'[D]), 3), ("E", NAMEOF('Table'[E]), 4) }
2. 编写通用度量值
以你需要的sum_over_count为例,编写动态识别列的度量值:
sum_over_count = VAR SelectedCol = SELECTEDVALUE(MetricColumns[MetricColumns]) // 动态匹配选中的列,计算对应列的总和 VAR ColSum = SWITCH( SelectedCol, "A", SUM('Table'[A]), "B", SUM('Table'[B]), "C", SUM('Table'[C]), "D", SUM('Table'[D]), "E", SUM('Table'[E]) ) VAR IdCount = COUNT('Table'[ID]) // 用DIVIDE避免除零错误 RETURN DIVIDE(ColSum, IdCount, BLANK())
如果需要更复杂的统计指标,只需修改度量值中的计算逻辑即可。比如计算90分位数的通用度量值:
complex_percentile = VAR SelectedCol = SELECTEDVALUE(MetricColumns[MetricColumns]) VAR ColValues = SWITCH( SelectedCol, "A", 'Table'[A], "B", 'Table'[B], "C", 'Table'[C], "D", 'Table'[D], "E", 'Table'[E] ) // 自定义复杂计算逻辑 RETURN PERCENTILEX.INC('Table', ColValues, 0.9)
3. 矩阵视觉配置
- 将创建好的
MetricColumns字段参数拖到矩阵的列区域 - 将编写的通用度量值(如
sum_over_count)拖到矩阵的值区域
此时矩阵会自动为每一列(A-E)应用对应的度量值计算,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Saguro
相关产品推荐
相关产品推荐

