Power BI - SVG 條形圖

bg:帶時(shí)間維度切換,多層級(jí)條形圖

  1. 寫一個(gè)指標(biāo),多指標(biāo)就可以不用重復(fù)寫時(shí)間維度
KPI = 
VAR a =SELECTEDVALUE ( 'KPI'[指標(biāo)名稱] ) //新建指標(biāo)表
VAR resurt =
    SWITCH (
                a,
                "K1", [K1], // K1 指標(biāo)名,[K1] 該指標(biāo)計(jì)算sum或count等
                "k2", [K2]    
            )
RETURN
    resurt

2.時(shí)間維度

KPI MTD = CALCULATE ( [KPI], DATESMTD( 'Date'[Date]) )
//QTD YTD 同上

3.KPI 時(shí)間維度篩選

KPI.時(shí)間維度 = SWITCH(SELECTEDVALUE('時(shí)間維度'[時(shí)間維度]), //新建維度表
                                                 "YTD",[KPI YTD],
                                                 "MTD",[KPI MTD],
                                                 "QTD",[KPI QTD]
                                                 )
  1. 條形圖SVG

4.1 單一條形圖

  • 4.1.1 單一維度
條形圖.單一層級(jí) = 
var a =[KPI.時(shí)間維度]
var e =CALCULATE([KPI.時(shí)間維度],ALL(fact[Channel])) //前面的維度 

var svg="data:image/svg+xml;utf8,
<svg xmlns='http://www.w3.org/2000/svg' width='300' height='30'>
    <rect x='0' y='1' width=' "&   DIVIDE(a,e)*150 &" ' height='25' 
        fill= '#18B196' 
    /> 
    <text x=' 
"& IF(a>100000000||DIVIDE(a,e)*150>=150,DIVIDE(a,e)+50,DIVIDE(a,e)*150+20) &" 
'
 y='17'
 font-size='12' 
 text-anchor='start'  <!-- 還有middle或end  --> 
 font-family='Arial' 
 fill='white'>"
& FORMAT(a,"#,0") &
"</text> 
</svg>"
return IF(ISBLANK(a),BLANK(),svg)
條形圖.單一維度
  • 4.1.2 多層級(jí)
條形圖.多層級(jí) = 
var a =[KPI.時(shí)間維度]
var e =
MAXX(ALLSELECTED('fact'[層級(jí)1],'fact'[層級(jí)2],'fact'[層級(jí)3]), MAX([KPI.時(shí)間類型], [KPI]))

var svg="data:image/svg+xml;utf8,
<svg xmlns='http://www.w3.org/2000/svg' width='300' height='30'>
    <rect x='0' y='1' width='"&   DIVIDE(a,e)*150 &"' height='25' 
        fill= '#42C8E5'
    /> 
    <text x='"& IF(a>100000000||DIVIDE(a,e)*150>=150,DIVIDE(a,e)+50,DIVIDE(a,e)*150+20) &"' y='17' font-size='12' text-anchor='start' font-family='Arial' fill='white'>"& FORMAT(a,"#,0") &"</text> 
</svg>"
return IF(ISBLANK(a),BLANK(),svg)
條形圖.多層級(jí)

4.2 組合條形圖

多層級(jí).組合.條形圖 = 
VAR MaxWidth = 300
VAR MaxValue =MAXX(ALLSELECTED('fact'[層級(jí)1],'fact'[層級(jí)2],'fact'[層級(jí)3]), MAX([KPI.時(shí)間類型], [KPI]))
VAR ScaleFactor = 0.08  // 調(diào)整比例以縮小圖形

VAR Width1 = IF(MaxValue = 0, 0, MaxWidth * [KPI.時(shí)間維度]/ MaxValue * ScaleFactor)
VAR Width2 = IF(MaxValue = 0, 0, MaxWidth * [KPI2] / MaxValue * ScaleFactor/2)

VAR SVG =
    IF(ISBLANK([KPI.時(shí)間維度]), 
       BLANK(), 
        "data:image/svg+xml;utf8, 
        <svg xmlns='http://www.w3.org/2000/svg' width='" & MaxWidth & "' height='25'>                                   
             <!-- 第一個(gè)條形圖 -->
            <rect x='0' y='0' width='" & Width1 & "' height='25' fill='rgb(224,157,0)'/>
            <!-- 第二個(gè)條形圖 -->
            <rect x='" & Width1 & "' y='0' width='" & Width2 & "' height='25' fill='rgb(157,172,204)'/>
            <!-- 第一個(gè)條形圖的文本 -->
          <text x='" & (Width1/60) & "' y='20' font-size='12' font-weight='bold' fill='white'>" & [KPI.時(shí)間維度] & " / <tspan dx='1' font-size='12' font-family='Arial' fill='white'>" & [KPI2]& "</tspan></text>

            <!-- 第二個(gè)條形圖的文本 -->
                                                                                
        </svg>"
    )
RETURN
    SVG
多層級(jí).組合.條形圖
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容