Power BI字段参数是实现多指标切换的一种方式,但是在表格矩阵展示时,存在格式管理弊端。比如下表需要为业绩达成率、增长额、增长率添加红绿灯,字段参数模式下需要每个指标设置一遍(截至2025年)。

如果需要一次为多个指标同时设定格式,就放弃字段参数,转而使用虚拟表。在建模选项卡下输入以下公式创建表:

得到:

利用这个表格把所有指标的值写到一个度量值:
M.多指标.值 =
SWITCH (
SELECTEDVALUE ( 'KPI列表'[指标名称] ),
"销售目标", [M.销售目标],
"销售额", [M.销售额],
"业绩达成率", [M.业绩达成率],
"同期销售额", [M.同期销售额],
"增长额", [M.增长额],
"增长率", [M.增长率]
)矩阵如下拖拽字段,行为维度(此处是门店),列是上表中的指标分组和指标名称,值为[M.多指标.值]。

此时遇到显示问题,有的指标是额,有的是率值,需要分别设定格式:

将指标格式由十进制调整为动态,输入以下公式:

显示恢复正常:

接下来为所有指标设置条件格式时就可以一步到位,以红绿灯为例,选择条件格式图标:

fx选择SVG度量值:
SVG.多指标.红绿灯 =
VAR _Color =
SWITCH (
SELECTEDVALUE ( 'KPI列表'[指标名称] ),
"业绩达成率", IF([M.业绩达成率]>=1,"green","red"),
"增长额", IF([M.增长额]>=0,"green","red"),
"增长率", IF([M.增长率]>=0,"green","red"),
"none"
)
RETURN
"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' id='wujunmin'>
<circle cx='50' cy='50' r='30' fill='" & _Color & "' fill-opacity='0.7'/>
</svg>"排名条件格式同理,不需要写N个排名图标度量值,只有一个:

