首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Power BI 富文本描述目标达成

Power BI 富文本描述目标达成

作者头像
wujunmin
发布2025-12-18 14:11:29
发布2025-12-18 14:11:29
1390
举报
文章被收录于专栏:wujunminwujunmin

看到瓶子老师在QuickBI使用富文本描述目标达成,我也在Power BI使用内置视觉对象尝试一二,可以单卡片展示:

也可以阵列展示:

模型如下:

这个富文本效果本身并不复杂,复杂的是涉及的指标如何计算。核心为时间进度目标达成两个指标,目标达成又可以拆分为实际业绩销售目标

传统的当月时间进度计算方式为,当月已发生天数/当月总天数,比如现在是2025年12月17日,时间进度=17/31

这种进度的潜台词是每天等效,实际业务中并不等效,比如实体服装店周一和周日的销售状况显然差异很大,不能把二者看作相同的一天。周日可能等于三个周一。

因此,需要引入销售系数的概念去计算时间进度以及分解销售目标。

销售系数需要考虑的因素有:平日和周末的差异,法定节假日的差异,非法定假日但是会自发庆祝的假日等。

具体每天的系数可以参考公司往年实际销售数据,对特殊假日、平日分别设置系数。

样例演示,不全面

先对系数求和:

M.销售系数 =SUM('销售系数表'[销售系数])

接着计算当前的时间进度:

M.时间进度.本月 =

DIVIDE (

TOTALMTD ( [M.销售系数], '日期表'[Date] ),

CALCULATE (

[M.销售系数],

FILTER (

ALL ( '日期表'[Date] ),

'日期表'[Date] >= EOMONTH ( TODAY (), -1 ) + 1 && '日期表'[Date] <= EOMONTH ( TODAY (), 0 )

)

)

)

每日的销售目标按照销售系数进行制定:

然后计算目标达成:

M.销售额.本月 =TOTALMTD([M.销售额],'日期表'[Date])

M.销售目标.本月 =

CALCULATE (

[M.销售目标],

FILTER (

ALL ( '日期表'[Date] ),

'日期表'[Date] >= EOMONTH ( TODAY (), -1 ) + 1 && '日期表'[Date] <= EOMONTH ( TODAY (), 0 )

)

)

M.业绩达成率.本月 =DIVIDE([M.销售额.本月],[M.销售目标.本月])

指标计算完成后开始进行文本串联。纯文本串联方式为:

M =

"截止今日" & FORMAT ( TODAY (), "YYYY年M月D日" ) & ",时间进度"

& FORMAT ( [M.时间进度.本月], "0.0%" ) & ",目标达成率"

& FORMAT ( [M.业绩达成率.本月], "0.0%" ) & ","

& IF ( [M.业绩达成率.本月] >= [M.时间进度.本月], "😃赶超时间进度", "😭落后时间进度" )

& ROUND ( ABS ( [M.业绩达成率.本月] - [M.时间进度.本月] ) * 100, 1 ) & "个百分点。"

这样没有格式,本例我们需要数字字号变大,并且蓝色突出,在赶超或者落后时间进度时还需要红绿条件格式。实现这种富文本可以借助SVG矢量图进行包装:

SVG富文本描述 =

"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='400' height='100'>

<foreignObject x='0' y='0' width='400' height='100'>

<p xmlns='http://www.w3.org/1999/xhtml' style='font-family: Arial; font-size: 16px;'>

截止今日<span style='color: blue; font-size: 20px;'>" & FORMAT(TODAY(),"YYYY年M月D日") & "</span>,时间进度<span style='color: blue; font-size: 20px; font-style: italic;'>" & FORMAT([M.时间进度.本月],"0.0%") & "</span>,目标达成率<span style='color: blue; font-size: 20px; font-style: italic;'>" & FORMAT([M.业绩达成率.本月],"0.0%") & "</span>,<span style='color: " & IF([M.业绩达成率.本月]>=[M.时间进度.本月],"green","red") & "; font-size: 20px; font-weight: bold;'>" & IF([M.业绩达成率.本月]>=[M.时间进度.本月],"😃赶超","😭落后") & "</span>时间进度<span style='color: blue; font-size: 20px;'>" & ROUND(ABS([M.业绩达成率.本月]-[M.时间进度.本月]) * 100,1) & "个百分点</span>。

</p>

</foreignObject>

</svg>"

度量值放入图片视觉对象单个展示,放入按钮切片器图像区域阵列展示:

实现的原理是纯文本包裹到HTML中,内置视觉对象识别不了HTML,因此HTML再包裹到SVG中。

富文本常见的语法有加粗、斜体、删除线、下划线、字体颜色、背景色,大家可以使用以下工具查看对应代码进行套用。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-12-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 wujunmin 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档