一、引言

在上一篇的教学中,我们为大家展示了如何在powerbi里制作简易的KPI卡片图,大家如果感兴趣可以翻我上一篇的内容,今天的教程是上一篇的进阶版

在上一篇教大家制作的卡片图中,我们已经展示出了与KPI相关的数据,但是仅仅是这样的布局肯定略显单调,那么今天就教大家如何对这一KPI卡片图进行美化,like this~

今天教程主要以美化为主,相关数据及度量值均与上一篇内容相同,那我们就开始吧

二、具体教学

首先,今天要用到的可视化工具为【卡片(新)】,它在原有【卡片图】的基础上新增加了一些自定义功能,让我们能更方便按自己的想法来设计卡片。

还是过一下我们的数据和已经创建好的度量值

度量值:

【Total Sales】:

Total Sales = sum(overview[Sales]) 

【Total Sales-Budget】:

Total Sales-Budget =

var gap = [Total Sales]-[Total Budget]

var percentage = divide([Total Sales],[Total Budget])-1

var sign = if(gap>0,"+","")

return sign & format(percentage,"#0.0%") & " | " & sign & format(gap,"#0,#")

1、单列卡片图制作

首先将我们创建好的三个度量值【Total Sales】、【Total Budget】、【Total Target】都拖入到【卡片(新)】的【数据】区域中,【布局】按【单列】排列:

得到:

随后,在【卡】下面,调整形状为【圆角矩形】,【圆角】设为10

关掉【边框】,打开【阴影】、【发光】和【强调栏】

 改一下显示字体并在【发光】和【强调栏】中调整自己喜欢的颜色

接下来在网上找几个相关的图片文件(png):

分别对三个【数据系列】中,在【图像】下【浏览】处添加刚刚下载好的图片文件

放到【文本左侧】,调整大小

随后,我们的单列卡片图就制作完成了:

2、单个KPI数据卡片图制作 

在刚刚制作的基础上,我们只保留【Total Sales】这一个

打开【引用标签】,将之前创建的度量值【Total Sales-Budget】拖进去

再将【详细信息】打开,把【Total Budget】拖进去

简单修改一下字体展示,效果如下:

如果还想再插入一些其他的【引用标签】操作同样像上面一样

3、向单个KPI卡片图插入折线图 

想往卡片图中插入折线图,这就又用到了我们前几篇所提到的SVG代码的方法了,我这边已经把代码给大家准备好了,代码部分借鉴了国外大佬Kerry的思路。

创建度量值,并将度量值设为【图像URL】的数据类型(荧光标出部分为自定义修改部分)

Sparkline =

// Static line color - use %23 instead of # for Firefox compatibility (Measure Derived from Eldersveld Modified by Kolosko)

VAR LineColour = "%23118DFF"

VAR PointColour = "white"

VAR Defs = "<defs>

    <linearGradient id='grad' x1='0' y1='25' x2='0' y2='50' gradientUnits='userSpaceOnUse'>

        <stop stop-color='#118DFF' offset='0' />

        <stop stop-color='#118DFF' offset='0.3' />

        <stop stop-color='white' offset='1' />

    </linearGradient>

</defs>"

// "Date" field used in this example along the X axis

VAR XMinDate = MIN('overview'[Dates])

VAR XMaxDate = MAX('overview'[Dates])

// Obtain overall min and overall max measure values when evaluated for each date

VAR YMinValue = MINX(Values('overview'[Dates]),CALCULATE([Total Sales]))

VAR YMaxValue = MAXX(Values('overview'[Dates]),CALCULATE([Total Sales]))

// Build table of X & Y coordinates and fit to 50 x 150 viewbox

VAR SparklineTable = ADDCOLUMNS(

    SUMMARIZE('overview','overview'[Dates]),

        "X",INT(150 * DIVIDE('overview'[Dates] - XMinDate, XMaxDate - XMinDate)),

        "Y",INT(50 * DIVIDE('Measure Storage'[Total Sales] - YMinValue,YMaxValue - YMinValue)))

// Concatenate X & Y coordinates to build the sparkline

VAR Lines = CONCATENATEX(SparklineTable,[X] & "," & 50-[Y]," ", 'overview'[Dates])

// Last data points on the line

VAR LastSparkYValue = MAXX( FILTER(SparklineTable, 'overview'[Dates] = XMaxDate), [Y])

VAR LastSparkXValue = MAXX( FILTER(SparklineTable, 'overview'[Dates] = XMaxDate), [X])

// Add to SVG, and verify Data Category is set to Image URL for this measure

VAR SVGImageURL =

    "data:image/svg+xml;utf8," &

    --- gradient---

    "<svg xmlns='http://www.w3.org/2000/svg' x='0px' y='0px' viewBox='-7 -7 164 64'>" & Defs &

     "<polyline fill='url(#grad)' fill-opacity='0.3' stroke='transparent'

      stroke-width='0' points=' 0 50 " & Lines &

      " 150 150 Z '/>" &

    --- Lines---

    "<polyline

        fill='transparent' stroke='" & LineColour & "'

        stroke-linecap='round' stroke-linejoin='round'

        stroke-width='3' points=' " & Lines &

      " '/>" &

    --- Last Point---

        "<circle cx='"& LastSparkXValue & "' cy='" & 50 - LastSparkYValue & "' r='4' stroke='" & LineColour & "' stroke-width='3' fill='" & PointColour & "' />" &

        "</svg>"

RETURN SVGImageURL

然后在这里插入刚刚创建的图像度量值:

位置放到【文本右侧】然后调整大小

效果展示:

好的那么我们今天的KPI卡片图的美化教程就到此结束了,希望对大家有所帮助,后续我还会为大家分享更多有关powerbi的小技巧,我们下篇再见~

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Logo

永洪科技,致力于打造全球领先的数据技术厂商,具备从数据应用方案咨询、BI、AIGC智能分析、数字孪生、数据资产、数据治理、数据实施的端到端大数据价值服务能力。

更多推荐