
2025年9月起,用户可以在Power BI使用DAX自定义函数(UDF)了,这意味着可以将计算逻辑打包,重复进行使用。上文《Power BI DAX自定义函数封装图表:开篇》进行了初步介绍:
本文开始进一步应用-封装条件格式图标。
模型中新建名为SVGShape的自定义函数,度量值引用该函数,函数包含两个参数,形状编号和颜色。

把该度量值放入按钮切片器的图像或者表格矩阵的条件格式图标,即可得到上图效果。
当第一个参数变为2,形状变为正方形:

变为3则菱形:

封装后的SVG图标可以在不接触SVG代码的情况下重复进行使用。自定义函数代码如下,目前内置了四种形状,读者可以按需添加:
DEFINE
FUNCTION SVGShape =
--功能:表格矩阵、按钮切片器、新卡片图条件格式图标
--参数:形状编号(1-圆,2-正方形,3-菱形,4-五角星)、颜色(支持英文颜色名称、RGB)
(IconIndex:numeric,Color:string)=>
"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' id='wujunmin' width='48' height='48'>" &
SWITCH(IconIndex,
1,"<rect rx='24' x='0' y='0' width='48' height='48' fill='" & Color & "'/>",
2,"<rect rx='5' x='0' y='0' width='48' height='48' fill='" & Color & "'/>",
3,"<path d='M5.41421 22.5858L22.5858 5.41421C23.3668 4.63317 24.6332 4.63316 25.4142 5.41421L42.5858 22.5858C43.3668 23.3668 43.3668 24.6332 42.5858 25.4142L25.4142 42.5858C24.6332 43.3668 23.3668 43.3668 22.5858 42.5858L5.41421 25.4142C4.63317 24.6332 4.63316 23.3668 5.41421 22.5858Z' fill='" & Color & "'/>",
4,"<path d='M23.0969 7.06406C23.4663 6.31198 24.5337 6.31198 24.9031 7.06406L29.6852 16.7997C29.8319 17.0984 30.1155 17.3054 30.4435 17.3533L41.1366 18.9145C41.9627 19.0351 42.2925 20.055 41.6948 20.6404L33.9571 28.2186C33.7198 28.4511 33.6115 28.786 33.6675 29.1143L35.4941 39.8148C35.6352 40.6414 34.7717 41.2718 34.0329 40.8815L24.4686 35.8294C24.1753 35.6744 23.8248 35.6744 23.5314 35.8294L13.9671 40.8815C13.2283 41.2718 12.3648 40.6414 12.5059 39.8148L14.3325 29.1143C14.3885 28.786 14.2802 28.4511 14.0429 28.2186L6.30523 20.6404C5.7075 20.055 6.03734 19.0351 6.86337 18.9145L17.5565 17.3533C17.8845 17.3054 18.1681 17.0984 18.3148 16.7997L23.0969 7.06406Z' fill='" & Color &"'/>") & "
</svg>"
函数放入DAX查询视图:

函数中的第一个参数也可以设置条件,进行形状变化:

我分享的图标查询系统内置了上万SVG图标,读者可以选择常用的形状集成到自定义函数中。
