PowerBI小技巧--使用换行符打造个性化多行卡

时间:2024-10-28 07:02:14

3

做了人类想成仙,坐在地上要上天

在做报告的过程中,很多时候需要性展示很长的一段文本来进行辅助说明,为了更好的展示,就需要对文本进行换行,而是PowerBI中进行换行也很简单:

  • Shift+Enter换行

  • 使用UNICHAR(10)

示例如下:

test1 = "我是中国
人"
test2 = "我是中国" & UNICHAR(10) & "人"
  • 1
  • 2
  • 3

效果如下:

这时想起了罗老师的一句话,做人就是要折腾。那么利用换行符还能做些什么呢?

比如,文章标题已经提到的多行卡,PowerBI内置的是有多行卡的,先来看下原生的效果

利用换行符就可以做到标签和数值在一行显示,可以先这样写:

test3 = 

VAR KPI1 = "Sales YTD: " & [ Amt]
VAR KPI2 = "Forecast: "  & [ Amt]
VAR KPI3 = "Difference: " & [Diff Actuals vs Forecast]

VAR Result = 
    KPI1 & UNICHAR(10) &
    KPI2 & UNICHAR(10) &
    KPI3

RETURN
    Result
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

因为卡片图是不能设置对齐方式的,所以这里需要插入一个空白按钮,然后设置下对齐方式。这里需要注意按钮宽度不能太宽,不然换行效果无法生效的。效果如下:

当然,上面代码中并未对相应的指标进行格式化,所以显示的小数位数可能不是我们想要的,用FORMATF进行相应的格式化就好。

文本是左对齐的,可能效果不是很好,先来看下空格在PowerBI中的显示效果

test4 = 
1234 & REPT(" ", 1) & 6 & UNICHAR(10) 
& 456789 & UNICHAR(10) 
& 678919
  • 1
  • 2
  • 3
  • 4

同样地插入一个空白按钮,将文本设置为该度量值,可以看到虽然第一行加了空格来补位,但是在显示效果上仍然无法和另外两行对齐。

既然左对齐行不通,那我们可以试下右对齐,修改代码如下,然后水平对齐改为右对齐,发现空格并没有生效。

test4 = 
1234 & REPT(" ", 1) & 6 & REPT(" ", 4) &  UNICHAR(10) 
& 456789 & REPT(" ", 4) & UNICHAR(10) 
& 678919 & REPT(" ", 4)
  • 1
  • 2
  • 3
  • 4

查询相关资料可知空格还可表示为UNICHAR(8197),再来看效果,发现空格生效了。

test5 = 
1234 & REPT(UNICHAR(8197), 1) & 6 & REPT(UNICHAR(8197), 4) & UNICHAR(10) 
& 456789 & REPT(UNICHAR(8197), 4) & UNICHAR(10) 
& 678919 & REPT(UNICHAR(8197), 4)
  • 1
  • 2
  • 3
  • 4

接下来就是应用到多行卡中

KPIS = 
VAR Space = UNICHAR(8197)

VAR KPI1_Text = "Sales YTD:"
VAR KPI2_Text = "Forecast:"
VAR KPI3_Text = "Difference:"

VAR KPI1_Value = FORMAT([ Amt], "0,,M" )   
VAR KPI2_Value = FORMAT([ Amt], "0,,M" )  
VAR KPI3_Value = FORMAT([Diff Actuals vs Forecast], "0,,M" ) 

VAR Widths = MAX( MAX( LEN(KPI1_Value), LEN(KPI2_Value)), LEN(KPI3_Value) )
VAR KPI1_ = (Widths - LEN(KPI1_Value) )*2
VAR KPI2_ = (Widths - LEN(KPI2_Value) ) *2
VAR KPI3_ = (Widths - LEN(KPI3_Value)  )*2

VAR Result = 
    KPI1_Text &  REPT(Space, Widths+KPI1_) & KPI1_Value  &  REPT(Space, 4) & UNICHAR(10) &
    KPI2_Text &  REPT(Space,  Widths+KPI2_) & KPI2_Value  &  REPT(Space, 4) & UNICHAR(10) &
    KPI3_Text &  REPT(Space,  Widths+KPI3_)  & KPI3_Value &  REPT(Space, 4) 

RETURN
    Result
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

折腾了这么久终于右对齐了,来看下最终效果

总结

之所以有这次尝试或者说折腾,是因为在做报表的过程中会很多时候会遇到用户需要看很多指标,如果全放卡片图的话性能会很差,当然也可以自带的多行卡,或者一些其他第三方图表,学习的过程就是一个不断试错,不断折腾地过程,希望大家在学习PowerBI时可以享受这种过程。