Power BI - 动态帕累托

关键词:帕累托、TOPN、动态、其他

实现效果


动态帕累托
  1. TOPN 控制显示个数,其余显示为其他
    2.重点项目高亮显示
    3.其他不计入占比

实现

  1. 构造辅助表
    目的:显示一个“其他”项
客户+其他 = 
UNION(
    VALUES('DIM CUS'[CRM]),
    {"其他"}
)
  1. 建立参数
    建模-新建参数-值
    两个
    2.1 TOPN
    2.2 Pareto% : 将 Pareto% 参数列的格式修改为百分比,这样在切片器中值就会以百分比的格式显示。

  2. 建立度量值

0 VALUE 动态 客户 = 
CALCULATE(
    [VALUE ],
    TREATAS(VALUES(('客户+其他'[CRM])),'DIM CUS'[CRM]))
1 排名 客户 = 
RANKX(
    ALLSELECTED('客户+其他'[CRM]),[0 VALUE 动态 客户])
2 VALUE 客户 TOPN和其他 = 
VAR categary=SELECTEDVALUE('客户+其他'[CRM])
VAR topncategary=TOPN([参数 值],VALUES('DIM CUS'[CRM]),[VALUE])
return SWITCH(TRUE(),
            [1排名 客户]<=[参数 值],[0 VALUE 动态 客户],
            categary="其他",
                CALCULATE([VALUE],
                    EXCEPT(ALLSELECTED('DIM CUS'[CRM]),topncategary
                )))
3 占比 客户 TOPN = 
VAR categary=SELECTEDVALUE('客户+其他'[CRM])
RETURN IF(categary="其他",BLANK(),
    VAR CurItemValue = [2 VALUE TOPN和其他]
    VAR Items = FILTER( ALL( '客户+其他'[CRM] ) , [2 VALUE TOPN和其他] >= CurItemValue )
    RETURN CALCULATE( [2 VALUE TOPN和其他] , Items ) / CALCULATE( [2 VALUE TOPN和其他] , ALL( '客户+其他'[CRM] ) )
    )
4 重点客户 = 
IF( [3 占比 客户 TOPN] <= [Pareto% 值] , [3 占比 客户 TOPN] )

其他项显示在最后面
把度量值放到工具提示里,并按照这个字段降序排列:

5 TOPN和其他 排序 客户 = 
IF(
    NOT ISBLANK([2 VALUE TOPN和其他]),
    CALCULATE(
        [VALUE],
        TREATAS( VALUES('客户+其他'[CRM]),'DIM CUS'[CRM])
    )
)

X轴:新构建的辅助表的客户+其他
列:2 VALUE 客户 TOPN和其他
行:3 占比 客户 TOPN;4 重点客户
工具提示:5 TOPN和其他 排序 客户

把4的数据标签关掉&设置阴影

其实已经完成,但如果想看80%的个数有多少,新建度量值

6 重点客户 数量 = 
MAXX(
ALL('客户+其他'),
IF(  [3 占比 客户 TOPN] <= [Pareto% 值] && not ISBLANK([3 占比 客户 TOPN]) ,[1 排名 客户]))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容