如何在Power BI中计算累计占比≤80%的商品数量并展示于卡片组件?
帕累托图处理:统计累计占比≤80%的商品数量
我正在探索帕累托图的多种处理方式,此次尝试基于度量值获取列的总和。现有销售数据表如下:
| 商品 | 销售额 |
|---|---|
| Article_4 | 1000.00 |
| Article_8 | 412.00 |
| Article_1 | 315.47 |
| Article_3 | 259.10 |
我使用如下度量值计算累计占比:
Pareto_Chart_CA = VAR CostVar = [Total_Cost] VAR All_CA = CALCULATE([Total_Cost];ALLSELECTED(Sales)) RETURN DIVIDE( SUMX( FILTER( SUMMARIZE(ALLSELECTED(Sales);Sales[Article]; "Cumm Total"; [Total_Cost]); [Cumm_Total] >= CostVar); [Cumm_Total]); All_CA;0)
将该度量值添加到可视化表格后,得到如下结果:
| 商品 | 销售额 | 累计占比 |
|---|---|---|
| Article_4 | 1000.00 | 0.50 |
| Article_8 | 412.00 | 0.71 |
| Article_1 | 315.47 | 0.87 |
| Article_3 | 259.10 | 1.00 |
我希望统计累计占比≤0.8的商品数量,因此创建了如下度量值:
Check_NB_80 = IF( Sales[Pareto_Chart_CA] <= 0.8; "1"; "0" )
得到结果表:
| 商品 | 销售额 | 累计占比 | 判断标识 |
|---|---|---|---|
| Article_4 | 1000.00 | 0.50 | 1 |
| Article_8 | 412.00 | 0.71 | 1 |
| Article_1 | 315.47 | 0.87 | 0 |
| Article_3 | 259.10 | 1.00 | 0 |
我想要计算“判断标识”列的总和(结果为2)并将其放入卡片组件,展示占总销售额≤80%的商品数量。请问是否可以实现该操作?
解决方案
当然可以实现,你需要创建一个新的度量值来直接统计符合条件的商品数量(注意原Check_NB_80返回的是文本类型的"1"/"0",无法直接求和),推荐两种实现方式:
方法1:遍历商品求和判断结果
创建新度量值:
Count_Products_80Pct = SUMX( ALLSELECTED(Sales[Article]), IF([Pareto_Chart_CA] <= 0.8, 1, 0) )
该度量值会遍历所有选中的商品,对每个商品判断其累计占比是否≤0.8,符合条件则计1,否则计0,最后求和得到总数。
方法2:筛选后统计行数
另一种更高效的写法:
Count_Products_80Pct = VAR ProductList = FILTER( SUMMARIZE(ALLSELECTED(Sales), Sales[Article], "Pareto", [Pareto_Chart_CA]), [Pareto] <= 0.8 ) RETURN COUNTROWS(ProductList)
先生成包含每个商品及其累计占比的临时表,筛选出累计占比≤0.8的行,最后统计筛选后的行数即可。
将上述任意一个度量值添加到卡片组件中,就能直接显示目标结果(示例中为2)。
内容的提问来源于stack exchange,提问作者Ralk
相关产品推荐
相关产品推荐

