
2025年9月起,用户可以在Power BI使用DAX自定义函数(UDF)了,这意味着可以将计算逻辑打包,重复进行使用。
微软官方说明文档:
https://learn.microsoft.com/zh-cn/power-bi/transform-model/desktop-user-defined-functions-overview
DAX结合SVG/HTML制作图表是DAX计算逻辑的一种(参考Power BI SVG制图入门知识2025版),因此也可以进行函数式封装。
例如下图,我封装了一个SVG排名图标函数SVGRank,用户在度量值输入三个参数-对什么维度进行排名,依据什么指标,显示什么颜色,即可实现下图的效果。

函数中的维度、指标、颜色可以任意更换:

用户无需接触背后复杂的SVG代码:

这是如何实现的?
首先,将Power BI Desktop升级到2025年9月的版本,在“文件 > 选项”-“设置 > 选项”-“预览功能,勾选“DAX 用户定义的函数”。
切换到DAX查询视图,输入以下函数代码:

DEFINE
FUNCTIONSVGRank = (
ColumnRank:anyref,MeasureRank:numeric expr,Color:string)=>
"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' id='wujunmin' width='96' height='96'>
<rect rx='48' x='0' y='0' width='96' height='96' fill='" & Color & "'/>
<text x='48' y='48' text-anchor='middle' dominant-baseline='central' font-size='60' fill='snow'>" & RANKX(ALL(ColumnRank),MeasureRank) & "</text>
</svg>"
该函数定义了三个参数,维度、指标、颜色,并在SVG代码中引用这三个参数。添加完成后点击下图红框处函数生效。

后续创建排名图标时可以重复引用:

本文是自定义函数封装图表的一个引子,我近几年分享了全球最多的DAX+SVG/HTML自定义图表,接下来会挑选一些常用的图表类型进行函数封装,并分享。
