172_再谈 Power BI 客户帕累托(ABC)分析度量值写法

焦棚子 2023-03-2813:59:5822,5712字数 1183阅读3分56秒阅读模式

焦棚子的文章目录

请在文末下载附件

 

一、背景

我们再来谈一谈帕累托在 Power BI 中的度量值写法。我们分别使用以RANKXWINDOW 两个函数为核心写度量值。

按照惯例,我们先看一下示例结果。

172_再谈 Power BI 客户帕累托(ABC)分析度量值写法

 

二、模型 & DAX

当前示例,我们只使用到三张表。分别是 T00_产品表T05_订单子表 以及分类标准计算表 CategoryTable, 关系如下:

172_再谈 Power BI 客户帕累托(ABC)分析度量值写法

 

分类标准计算表 CategoryTable 的 DAX,注意区间的开闭规则为:左开右闭

CategoryTable = 
/*区间:左开右闭*/
DATATABLE (
    "category", STRING,
    "Left", DOUBLE,
    "Right", DOUBLE,
    {
        { "A", 0, 0.7 },
        { "B", 0.7, 0.85 },
        { "C", 0.85, 1 }
    }
)

 

核心度量值主要是累计占比accumulate%

1、度量值核心 DAX 使用 WINDOW

window_accumulate% = 
VAR addTable =
    ADDCOLUMNS ( ALLSELECTED ( 'T00_产品表'[F_02_产品分类] ), "@销售金额", [01_销售金额] )
VAR context =
    WINDOW ( 1, ABS, 0, REL, addTable, ORDERBY ( [@销售金额], DESC ) )
VAR fenzi =
    CALCULATE ( [01_销售金额], context )
VAR fenmu =
    CALCULATE ( [01_销售金额], ALL ( 'T00_产品表'[F_02_产品分类] ) )
VAR per =
    IF (
        ISFILTERED ( 'T00_产品表'[F_02_产品分类] ),
        DIVIDE ( fenzi, fenmu, BLANK () ),
        BLANK ()
    )
RETURN
    per

 

2、度量值核心 DAX 使用 RANKX

rankx_accumulate% = 
VAR fenzi =
    CALCULATE (
        [01_销售金额],
        TOPN (
            [rankx_rankDesc],
            ADDCOLUMNS ( ALL ( 'T00_产品表'[F_02_产品分类] ), "@rank", [rankx_rankDesc] ),
            [@rank], ASC
        )
    )
VAR fenmu =
    CALCULATE ( [01_销售金额], ALL ( 'T00_产品表'[F_02_产品分类] ) )
VAR per =
    DIVIDE ( fenzi, fenmu, BLANK () )
RETURN
    per

 

三、总结

  1. 经过我们的测试,使用WINDOW 的效率会略高,建议使用 WINDOW 为核心的写法。
  2. 分类的标准,可以自由拓展,根据自身业务去修改。
  3. 帕累托图的柱子的颜色可以根据分类写对应的 DAX 来设定。

 

 

by焦棚子

焦棚子的文章目录

 

请点击【立即购买】或者【升级VIP】获得案例附件。

隐藏内容需要支付:¥5
立即购买 升级VIP

焦棚子
  • 除非特殊声明,本站文章均为焦棚子原创,转载请务必保留本文链接!
  • 《172_再谈 Power BI 客户帕累托(ABC)分析度量值写法》链接:https://jiaopengzi.com/2956.html