Power BI - SVG 条形图

bg:带时间维度切换,多层级条形图

  1. 写一个指标,多指标就可以不用重复写时间维度
KPI = 
VAR a =SELECTEDVALUE ( 'KPI'[指标名称] ) //新建指标表
VAR resurt =
    SWITCH (
                a,
                "K1", [K1], // K1 指标名,[K1] 该指标计算sum或count等
                "k2", [K2]    
            )
RETURN
    resurt

2.时间维度

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

3.KPI 时间维度筛选

KPI.时间维度 = SWITCH(SELECTEDVALUE('时间维度'[时间维度]), //新建维度表
                                                 "YTD",[KPI YTD],
                                                 "MTD",[KPI MTD],
                                                 "QTD",[KPI QTD]
                                                 )
  1. 条形图SVG

4.1 单一条形图

  • 4.1.1 单一维度
条形图.单一层级 = 
var a =[KPI.时间维度]
var e =CALCULATE([KPI.时间维度],ALL(fact[Channel])) //前面的维度 

var svg="data:image/svg+xml;utf8,

     
     
 font-family='Arial' 
 fill='white'>"
& FORMAT(a,"#,0") &
" 
"
return IF(ISBLANK(a),BLANK(),svg)
条形图.单一维度
  • 4.1.2 多层级
条形图.多层级 = 
var a =[KPI.时间维度]
var e =
MAXX(ALLSELECTED('fact'[层级1],'fact'[层级2],'fact'[层级3]), MAX([KPI.时间类型], [KPI]))

var svg="data:image/svg+xml;utf8,

     
    "& FORMAT(a,"#,0") &" 
"
return IF(ISBLANK(a),BLANK(),svg)
条形图.多层级

4.2 组合条形图

多层级.组合.条形图 = 
VAR MaxWidth = 300
VAR MaxValue =MAXX(ALLSELECTED('fact'[层级1],'fact'[层级2],'fact'[层级3]), MAX([KPI.时间类型], [KPI]))
VAR ScaleFactor = 0.08  // 调整比例以缩小图形

VAR Width1 = IF(MaxValue = 0, 0, MaxWidth * [KPI.时间维度]/ MaxValue * ScaleFactor)
VAR Width2 = IF(MaxValue = 0, 0, MaxWidth * [KPI2] / MaxValue * ScaleFactor/2)

VAR SVG =
    IF(ISBLANK([KPI.时间维度]), 
       BLANK(), 
        "data:image/svg+xml;utf8, 
                                           
             
            
            
            
            
          " & [KPI.时间维度] & " / " & [KPI2]& "

            
                                                                                
        "
    )
RETURN
    SVG
多层级.组合.条形图

你可能感兴趣的:(Power BI - SVG 条形图)