Power BI 2025年9月推出了DAX UDF(user-defined functions),方便用户定义一次计算,并在任何地方重复使用计算。这种计算可以是DAX驱动的图表(结合SVG/HTML),我会把前期分享的很多图表样式进行函数式封装,方便用户在不了解SVG/HTML的情况下也可以自定义图表效果。
今天分享两种进度条函数。
1. SVG版

显示效果:

使用方法:
首先,将Power BI Desktop升级到2025年9月的版本,安装包地址:
https://www.microsoft.com/zh-cn/download/details.aspx?id=58494
打开文件-选项和设置-选项-预览功能,勾选”DAX用户自定义函数“:

切换到DAX查询视图,粘贴代码,点击右上角的使用更改更新模型即生效。

DEFINE
FUNCTION SVGProgressBar =
(PctMeasure:numeric,Color:string)=>
"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='30'>
<path id='wujunmin' d='M0 15L200 15' stroke='" & Color & "' stroke-opacity='0.4' stroke-width='10' stroke-dasharray='2'/><path d='M0 15L" & 200 * PctMeasure & " 15' stroke='" & Color & "' stroke-width='10'/>
</svg>"
新建度量值引用该函数,例如:
度量值 = SVGProgressBar(
[M.业绩达成率],
"brown"
)
按钮切片器视觉对象使用时,将以上度量值放入图像区域:

表格矩阵使用时,将度量值标记为图像URL,放入列值:

图像宽度高度适当调整:

2. HTML版

使用方法:
同SVG版一样,将代码放入DAX查询视图:
FUNCTION HTML_Progress_Bar =
(ColumnForPct:anyref,PctMeasure:numeric,Color:string)=>
"<p style='font-size: 20px;background: linear-gradient(to right, " & Color & " " & FORMAT(PctMeasure,"0%") & ", lightgrey 0);border-radius: 20px;white-space: nowrap;padding-left:5px;'>" & SELECTEDVALUE(ColumnForPct) & " " & FORMAT(PctMeasure,"0%") & "</p>"
新建度量值引用该函数:
度量值 =HTML_Progress_Bar(
'店铺资料'[城市],
[M.业绩达成率],
"tomato"
)
HTML Content视觉对象拖拽维度和以上度量值:

近期已经分享了一系列的DAX图表函数,我会把它们集中存放在:

https://junminwu.github.io/
读者可以按关键字搜索需要的图表样式,鼠标右键代码行,复制粘贴到自己模型的DAX查询视图进行使用。
