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

文章介绍了如何在PowerBI中使用DAX语言,通过WINDOW和RANKX函数来编写帕累托分析的度量值,以实现累计占比计算。文中提供了示例代码,并指出使用WINDOW函数的效率更高,建议采用此方法。分类标准可根据业务需求自定义,同时提到了帕累托图颜色的DAX设定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

一、背景

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

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

172-1

Power BI 公共 web 效果:https://demo.jiaopengzi.com/pbi/172-full.html

二、模型 & DAX

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

172-2

分类标准计算表 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 来设定。

附件下载

https://jiaopengzi.com/2956.html

请关注


全网同名搜索 焦棚子

如果对你有帮助,请 点赞关注三连 支持一下,这是我们更新的动力。

by 焦棚子

### 如何在 Power BI 中创建帕累托帕累托图是一种组合图表,通常由柱状图和折线图组成。它用于显示数据集中最重要的因素及其累积百分比贡献。以下是关于如何在 Power BI 中制作帕累托图的详细说明。 #### 数据准备 为了绘制帕累托图,需要先准备好数据集并计算累计百分比。假设有一个销售数据表 `Sales`,其中包含两列:产品名称 (`Product`) 和销售额 (`Revenue`)。可以按照以下步骤处理数据: 1. **按销售额降序排列** 使用 DAX 创建一个新的表格来对原始数据进行排序,并计算每种产品的累计百分比。 ```DAX ParetoTable = ADDCOLUMNS( SUMMARIZE(Sales, Sales[Product], "Total Revenue", SUM(Sales[Revenue])), "Cumulative Percentage", CALCULATE( DIVIDE( SUMX(FILTER(SUMMARIZE(Sales, Sales[Product], "Total Revenue", SUM(Sales[Revenue])), [Product] <= EARLIER([Product])), SUM(Sales[Revenue]) ) ) * 100 ) ``` 2. **确保数据已排序** 新建的 `ParetoTable` 表格应基于总销售额从高到低排序[^3]。 #### 图形设计 完成数据准备工作后,在 Power BI 的可视化界面中执行以下操作: 1. 添加一个簇状条形图 (Clustered Column Chart),并将 `Product` 设置为轴字段,将 `Total Revenue` 设置为值字段。 2. 添加另一个折线图 (Line Chart),将其与现有的条形图合并成组合图表 (Combo Chart)。设置 `Cumulative Percentage` 作为 Y 轴上的第二个度量。 3. 配置双坐标轴选项以调整比例范围,使两个图形能够清晰展示在一起[^4]。 通过上述方法即可成功构建一张标准的帕累托图。 ```python import pandas as pd data = {'Product': ['A', 'B', 'C'], 'Revenue': [500, 300, 200]} df = pd.DataFrame(data) # 计算累计百分比 df['Cumulative_Percentage'] = df['Revenue'].cumsum() / df['Revenue'].sum() * 100 print(df) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值