长文本在Power BI通常用作摘要,描述一种或一组业务状况。在长文本植入度量值可以达到动态切换数据的目的。以下是很普通的一种长文本,展示了单个门店的三个指标。
M.P1 =
SELECTEDVALUE('销售目标'[店铺名称]) & "的" &
"销售业绩 " & FORMAT([M.销售业绩],"#,#元") &
",业绩达成 " & FORMAT([M.业绩达成率],"0%") &
",销售折扣 " & FORMAT([M.销售折扣],"0.00")
可以把度量值放入表格矩阵或者新卡片图视觉对象进行展示:
左侧表格,右侧新卡片图
表格默认是换行效果,新卡片图需要把换行打开:
无论是表格还是新卡片图,文本的颜色、背景色只能统一调整:
长文本通常含有较多的信息,因此有局部高亮的需求。以下长文本对达标的指标进行了标绿,未达标的标红。
这里没有使用内置的背景色功能,而是借助DAX对长文本内部进行局部颜色标记。原理是HTML+CSS。视频版:
在M.P1度量值的基础上进行改造,前后套上<p>,并在度量值中font-size调整字体大小:
M.P2 =
"<p id='wujunmin' style='font-size: 30px;'>" &
SELECTEDVALUE('销售目标'[店铺名称]) & "的" &
"销售业绩 " & FORMAT([M.销售业绩],"#,#元") &
",业绩达成 " & FORMAT([M.业绩达成率],"0%") &
",销售折扣 " & FORMAT([M.销售折扣],"0.00") &
"</p>"
把度量值放入HTML Content视觉对象,得到和表格、新卡片图看上去相同的结果:
接下来进行局部背景色条件格式限制:
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后得到:
进一步加工,背景色换为线性渐变效果,这里仅演示一个指标,多个指标相同道理:
度量值如下,代码中的颜色按需调整:
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>"
接着换成中心渐变:
度量值如下:
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:
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图表设计