如何在Excel数据透视表/Power Pivot中添加帕累托80/20占比字段
实现Power Pivot中贡献80%收入的SKU统计(动态适配层级)
核心思路
用DAX度量值实现帕累托(80/20法则)分析,依赖上下文筛选自动适配行区域的不同层级(类别、子类别等),无需手动调整公式。
步骤1:确认/创建基础度量值
如果还没有基础统计度量,先创建这两个:
- SKU计数:
SKU计数 = DISTINCTCOUNT('你的数据表'[SKU]) - 收入求和:
收入求和 = SUM('你的数据表'[Revenue])
步骤2:创建累计收入占比的中间度量
用于计算单个SKU在当前分组下的累计收入占比:
累计收入占比 = VAR 当前SKU收入 = [收入求和] VAR 分组总收入 = CALCULATE([收入求和], ALLSELECTED('你的数据表'[SKU])) VAR 按收入排序的SKU = ADDCOLUMNS( ALLSELECTED('你的数据表'[SKU]), "@SKU收入", CALCULATE([收入求和]), "@累计占比", DIVIDE( SUMX(FILTER(ALLSELECTED('你的数据表'[SKU]), CALCULATE([收入求和]) >= CALCULATE([收入求和], CURRENTROW())) , [收入求和]), 分组总收入 ) ) RETURN MAXX(FILTER(按收入排序的SKU, [@SKU收入] = 当前SKU收入), [@累计占比])
步骤3:统计贡献80%收入的SKU数量
自动适配当前行层级(类别/子类别)的统计度量:
贡献80%收入的SKU数量 = VAR 分组总收入 = CALCULATE([收入求和], ALLSELECTED('你的数据表'[SKU])) VAR 按收入排序的SKU = ADDCOLUMNS( ALLSELECTED('你的数据表'[SKU]), "@SKU收入", CALCULATE([收入求和]), "@累计占比", DIVIDE( SUMX(FILTER(ALLSELECTED('你的数据表'[SKU]), CALCULATE([收入求和]) >= CALCULATE([收入求和], CURRENTROW())) , [收入求和]), 分组总收入 ) ) VAR 前80%收入SKU集合 = FILTER(按收入排序的SKU, [@累计占比] <= 0.8) RETURN COUNTROWS(前80%收入SKU集合)
步骤4:统计贡献80%收入的SKU占比
基于数量计算当前分组内的占比:
贡献80%收入的SKU占比 = DIVIDE( [贡献80%收入的SKU数量], [SKU计数], 0 )
使用方法
- 将上述度量值添加到Power Pivot模型
- 在数据透视表列区域添加
贡献80%收入的SKU数量和贡献80%收入的SKU占比 - 切换行区域层级(如从类别切换到子类别)时,度量值会自动适配当前分组上下文,重新计算对应层级的80%收入SKU统计
关键细节
ALLSELECTED('你的数据表'[SKU])确保只统计当前行层级内的SKU,不会跨分组计算- 按SKU收入从高到低排序后累加占比,直到累计值达到80%
DIVIDE函数避免除以0的错误,提升公式健壮性
内容的提问来源于stack exchange,提问作者user2298982
相关产品推荐
相关产品推荐

