前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Power BI 长文本局部高亮条件格式

Power BI 长文本局部高亮条件格式

作者头像
wujunmin
发布2025-02-10 16:47:59
发布2025-02-10 16:47:59
3400
代码可运行
举报
文章被收录于专栏:wujunminwujunmin
运行总次数:0
代码可运行

长文本在Power BI通常用作摘要,描述一种或一组业务状况。在长文本植入度量值可以达到动态切换数据的目的。以下是很普通的一种长文本,展示了单个门店的三个指标。

代码语言:javascript
代码运行次数:0
复制
M.P1 = 
SELECTEDVALUE('销售目标'[店铺名称]) & "的" &
"销售业绩 " & FORMAT([M.销售业绩],"#,#元") & 
",业绩达成 " & FORMAT([M.业绩达成率],"0%") & 
",销售折扣 " & FORMAT([M.销售折扣],"0.00")

可以把度量值放入表格矩阵或者新卡片图视觉对象进行展示:

左侧表格,右侧新卡片图

表格默认是换行效果,新卡片图需要把换行打开:

无论是表格还是新卡片图,文本的颜色、背景色只能统一调整:

长文本通常含有较多的信息,因此有局部高亮的需求。以下长文本对达标的指标进行了标绿,未达标的标红。

这里没有使用内置的背景色功能,而是借助DAX对长文本内部进行局部颜色标记。原理是HTML+CSS。视频版:

在M.P1度量值的基础上进行改造,前后套上<p>,并在度量值中font-size调整字体大小:

代码语言:javascript
代码运行次数:0
复制
M.P2 = 
"<p id='wujunmin' style='font-size: 30px;'>" & 
    SELECTEDVALUE('销售目标'[店铺名称]) & "的" &
    "销售业绩 " & FORMAT([M.销售业绩],"#,#元") & 
    ",业绩达成 " & FORMAT([M.业绩达成率],"0%") & 
    ",销售折扣 " & FORMAT([M.销售折扣],"0.00") & 
"</p>"

把度量值放入HTML Content视觉对象,得到和表格、新卡片图看上去相同的结果:

接下来进行局部背景色条件格式限制:

代码语言:javascript
代码运行次数:0
复制
M.P3 = 
"<p id='wujunmin' style='font-size: 30px;'>" & 
    SELECTEDVALUE('销售目标'[店铺名称]) & "的" &
    "销售业绩 " & FORMAT([M.销售业绩],"#,#元") & 
    ",<span style='background: " & IF([M.业绩达成率]>=1,"lightgreen","tomato") & ";'>业绩达成 " & FORMAT([M.业绩达成率],"0%") & "</span>" &
    ",<span style='background: " & IF([M.销售折扣]>0.78,"lightgreen","tomato") & ";'>销售折扣 " & FORMAT([M.销售折扣],"0.00") & "</span>
</p>"

把每个需要背景色的文本片段(这里是业绩达成率和销售折扣这俩指标)使用span包裹,span添加背景色样式,样式由IF控制结果。M.P3放入HTML Content后得到:

进一步加工,背景色换为线性渐变效果,这里仅演示一个指标,多个指标相同道理:

度量值如下,代码中的颜色按需调整:

代码语言:javascript
代码运行次数:0
复制
M.P4 = 
"<p id='wujunmin' style='font-size: 30px;'>" & 
    SELECTEDVALUE('销售目标'[店铺名称]) & "的" &
    "销售业绩 " & FORMAT([M.销售业绩],"#,#元") & 
    ",<span style='background: " & IF([M.业绩达成率]>=1,"none","linear-gradient(to right, white, red);") & ";'>业绩达成 " & FORMAT([M.业绩达成率],"0%") & "</span>" &
    ",销售折扣 " & FORMAT([M.销售折扣],"0.00") & "
</p>"

接着换成中心渐变:

度量值如下:

代码语言:javascript
代码运行次数:0
复制
M.P5 = 
"<p id='wujunmin' style='font-size: 30px;'>" & 
    SELECTEDVALUE('销售目标'[店铺名称]) & "的" &
    "销售业绩 " & FORMAT([M.销售业绩],"#,#元") & 
    ",<span style='background: " & IF([M.业绩达成率]>=1,"none","radial-gradient(red, white);") & ";'>业绩达成 " & FORMAT([M.业绩达成率],"0%") & "</span>" &
    ",销售折扣 " & FORMAT([M.销售折扣],"0.00") & "
</p>"

接着生成一种仿真荧光笔效果:

这其实还是渐变填充,原创意作者天才的想到了双渐变叠加,原代码在此:

https://codepen.io/cassidoo/pen/JjQOBZB

这里我们可以应用到Power BI:

代码语言:javascript
代码运行次数:0
复制
M.P6 = 
VAR BGColor=
"linear-gradient(
      100deg,
      #ff000000 1%,
      #ff0000 2.5%,
      #ff000080 5.7%,
      #ff00001a 93%,
      #ff0000b4 95%,
      #ff000000 98%
    ),
    linear-gradient(182deg, #ff000000, #ff00004d 8%, #ff000000 15%);"
RETURN
"<p id='wujunmin' style='font-size: 30px;'>" & 
    SELECTEDVALUE('销售目标'[店铺名称]) & "的" &
    "销售业绩 " & FORMAT([M.销售业绩],"#,#元") & 
    ",<span style='background: " & IF([M.业绩达成率]>=1,"none",BGColor) & ";'>业绩达成 " & FORMAT([M.业绩达成率],"0%") & "</span>" &
    ",销售折扣 " & FORMAT([M.销售折扣],"0.00") & "
</p>"

以上内容算是抛砖引玉,长文本的内容不一定是多个指标,也可以是维度、指标串联:

高亮的也不一定是背景色,还可以下划线;

框选:

这都是基础的CSS语法,网上有海量的资料,大家可以按需定制。还是那句:学一点前端代码有助于Power BI/Excel图表设计

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

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

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

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

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