打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
PowerBI实现全动态ABC分析帮助找出业务中的主要因素

ABC分类法又称帕累托分析法,主要用于分清管理对象的主次,并分为A,B,C三类。市面上有很多讲述用Excel或PowerBI实现ABC分析的方法。而本文将讲述异常强大灵活的全动态ABC分析法。

ABC分析法简介

一般地,基于关注的某类管理对象以及对它的测量构建ABC模型。例如:某零售企业有500个SKU以及这些SKU对应的销售额,那么哪些SKU是重要的呢,这就是在业务运营中分清主次的问题。

一些常见的做法是在Excel或PowerBI中,将产品SKU作为维度 并 将对应的销售额作为基础度量指标,将这些销售额指标从大到小排列,并计算截止当前产品SKU的销售额累计合计占总销售额的百分比。

  • 百分比在 70%(含)以内,划分为 A 类。

  • 百分比在 70~90%(含)以内,划分为 B 类。

  • 百分比在 90~100%(含)以内,划分为 C 类。

由此,便可以得到运营管理中的主要因素集合。

值得注意的是,这个方法是通用的,不光可以用来划分产品和销售额,还可以划分客户及客户交易额等。这将形成如下的曲线:

可以看出,由于 A 类元素是主要因素,所以它们更快的促进指标的变化,表现在曲线的陡峭爬升上。

当然,ABC分析还可以用于更多的运营管理方面,这就导致一些传统方法的不便性。

传统ABC分析法的局限

主要是一点:不够灵活。体现在:

  • A、B、C的占比需要自定义设置,由用户通过滑杆拖拉形成,而不是事先规定。

  • 要分析的对象元素应该可以动态指定,例如可以是产品,城市,客户,客户职业,客户行业等多种运营管理要素。

  • 要分析的对象指标应该可以动态指定,例如可以是交易额,利润,成本,利润率,同比增长等多种运营管理指标。

  • 要计算的元素空间应该可以动态选择,例如购买特定产品的客户,某个地区的门店,以及在产品SKU中排除某几个特别项等。

如果能同时满足上述四点,不管在Excel或PowerBI中实现都存在一定的挑战。尤其是Excel,几乎很难做到这种动态性。这些管理要素的排列组合相当之多,所以本文正是通过PowerBI的方法来给出一个解决方案。

PowerBI中的表结构

表基础结构如下所示:

满足维度建模的业务表,并单独制作 ABC分析主题辅助表 ,不对以后的业务模型做侵入式的破坏,这里没有任何一个计算列,完全依赖度量值完成设计,保持灵活性。

  • 基本指标表,包括了常用的度量值,将作为用户可以动态选择的指标来源。

  • ABC分类,非常简单,仅仅是分类维度。

  • ABC指标,是与ABC分析有关的所有指标度量值。

  • ABC元素,是对可能发生的管理要素的 逻辑抽象,是能实现通用性的设计基础。

ABC元素

这里将可能被管理的业务元素做了抽象,并用计算表整合在一起,如下:

ABC元素 =
VAR Customers1 =
    SELECTCOLUMNS (
        ADDCOLUMNS ( DISTINCT ( '客户'[职业] )'元素类型''客户职业' ),
        '元素名称', [职业],
        '元素类型', [元素类型]
    )
VAR Customers2 =
    SELECTCOLUMNS (
        ADDCOLUMNS ( DISTINCT ( '客户'[行业] )'元素类型''客户行业' ),
        '元素名称', [行业],
        '元素类型', [元素类型]
    )
VAR Citys =
    SELECTCOLUMNS (
        ADDCOLUMNS ( DISTINCT ( '地区'[省/自治区] )'元素类型''省份' ),
        '元素名称', [省/自治区],
        '元素类型', [元素类型]
    )
VAR Products =
    SELECTCOLUMNS (
        ADDCOLUMNS ( DISTINCT ( '产品'[子类别] )'元素类型''产品' ),
        '元素名称', [子类别],
        '元素类型', [元素类型]
    )
RETURN
    UNION ( Customers1, Customers2, Citys, Products )

这里将可能受到管理的要素如:产品子分类,客户职业,客户行业,城市统称为元素,做的这一层抽象,是这个模型的精妙所在。

ABC分析的度量值

本例的ABC分析中涉及多个度量值,它们大致构成这样一种依赖关系图谱:

如果发现,度量值需要相互调用,可以用思维导图的方式整理出主要结构。

其中,ABC 元素 价值 使用虚拟关系动态构建计算,如下:

ABC 元素 价值 =
VAR ItemRelationOfCustomer1 =
    TREATAS ( VALUES ( 'ABC元素'[元素名称] ), '客户'[职业] )
VAR ItemRelationOfCustomer2 =
    TREATAS ( VALUES ( 'ABC元素'[元素名称] ), '客户'[行业] )
VAR ItemRelationOfCity =
    TREATAS ( VALUES ( 'ABC元素'[元素名称] ), '地区'[省/自治区] )
VAR ItemRelationOfProduct =
    TREATAS ( VALUES ( 'ABC元素'[元素名称] ), '产品'[子类别] )
RETURN
    SWITCH (
        TRUE (),
        SELECTEDVALUE ( 'ABC元素'[元素类型] ) = '客户职业'CALCULATE ( [销售 指标 自动], ItemRelationOfCustomer1 ),
        SELECTEDVALUE ( 'ABC元素'[元素类型] ) = '客户行业'CALCULATE ( [销售 指标 自动], ItemRelationOfCustomer2 ),
        SELECTEDVALUE ( 'ABC元素'[元素类型] ) = '省份'CALCULATE ( [销售 指标 自动], ItemRelationOfCity ),
        SELECTEDVALUE ( 'ABC元素'[元素类型] ) = '产品'CALCULATE ( [销售 指标 自动], ItemRelationOfProduct ),
        BLANK ()
    )

这样就保证了,在上述度量值图谱中,只需要和该 ABC 元素 价值打交道,而不必管到底这个度量值在计算什么,是销售额,还是利润,还是其他,完全由用户在分析时动态决定。这也是本模型的最大特色所在。

这个技巧是通用性的,可以借鉴植入您自己的建模设计中。另外,这里用到了面向对象编程思想中的开放闭合原则设计模式,在我的课程《用户自动化运营分析》有更加仔细的描述。

其他度量值,例如 ABC 元素 价值 占比,如下:

ABC 元素 价值 占比 =
VAR Items =
    CALCULATETABLE (
        DISTINCT ( 'ABC元素'[元素名称] ),
        ALLSELECTED ( 'ABC元素'[元素名称] )
    )
VAR Total =
    CALCULATE ( [ABC 元素 价值], Items )
VAR CurrentItemValue = [ABC 元素 价值]
RETURN
    DIVIDE ( CurrentItemValue, Total )

这些度量值的计算仅仅依赖于抽象的ABC元素即可。

ABC分析中的核心度量值是累计占比位,就是考察当前元素到达了多大的累计百分比,如下:

ABC 元素 价值 累计占比位 =
VAR Items =
    CALCULATETABLE (
        DISTINCT ( 'ABC元素'[元素名称] ),
        ALLSELECTED ( 'ABC元素'[元素名称] )
    )
VAR Total =
    CALCULATE ( [ABC 元素 价值], Items )
VAR CurrentItemValue = [ABC 元素 价值]
VAR CumulativeValue =
    CALCULATE (
        [ABC 元素 价值],
        FILTER ( Items, [ABC 元素 价值] >= CurrentItemValue )
    )
RETURN
    DIVIDE ( CumulativeValue, Total )

它的DAX实现也非常简单,这里再重复一个技巧,不要试图写出连锁的公式,而是把公式拆解开来:

  • Items 计算当前选择的元素范围;

  • Total 计算当前选择的元素范围对应的元素价值合计;

  • CurrentItemValue 计算当前元素的价值

  • CumulativeValue 计算积累至当前元素的积累价值

  • 返回积累价值与价值合计的比例

逻辑上非常简单可行,这样就构建了ABC分析的主体框架。

ABC分析的可视化

ABC分析的可视化有行业默认的作图习惯,那就是用组合图来表示。但这里的一个挑战在于如果真的尝试去建立这个著名的帕累托图,要显示A,B,C用不同的色系(图例)以标明不同的颜色,如下:

这里要注意两点:

  • 用ABC类别做筛选,需要为其单独建立度量值(动态度量值),若正好为当前类别,计算,否则显示空,以便形成可区分的颜色效果。

  • 由于上述的这种做法导致无法正确排序,所以必须将用于排序的度量值加入工具提示,以便正确排序。

ABC分析的动态性

本案例的设计以满足解决前述四大痛点而存在,因此:

  • 第一步,用户可以拖动滑竿来选择A,B,C参数的动态相对大小,系统自动计算比例关系;

  • 第二步,用户选择需要分析的元素类型:产品、客户行业、客户职业或城市;

  • 第三步,用户选择需要分析的元素指标:销售额、利润、订单数;

  • 第四步,用户可以筛选需要计算的元素范围;

  • 第五步,用户进一步筛选需要计算的元素范围,与上一步共同构成精细化的选择;

值得注意的问题

负值问题

由于本案例的灵活性,对于某些指标的计算会出现不符合常规,但却又真正符合实际的情况,例如:利润可能出现负值,那ABC分析会如何呈现的,如下:

由于负值的产生会导致出现超过100%的情况,但最终是以100%结束的,但这不影响找到主要因素。如果确实要避免这样情况,也是可以很简单的调整来满足。

最终结果

ABC分析的归宿之一是显示ABC三类的各自总价值占比,如下:

数字化显示

本案例给出了PowerBI书签按钮实现数据化显示切换的效果,这样可以在查看繁杂数据与可视化之间灵活切换,如下:

总结

一起来看看ABC全动态分析的效果吧:(动画)

通过这个案例以及前述的RFM,NPS等模型,应该可以体会PowerBI DAX 模型动态化设计的通用做法套路。在ABC分析中,这里帮助业务人员从各种管理元素与指标结合中找到主要因素并作出反应。


欢迎加入微信群交流学习

若感觉本文有所帮助或需要源文件深入研究

分享转发截图私信




线下活动预告

本周 4月15日 上海 下午 13:00 到 17:00

Excel / PowerBI干货分享会

~ 场地有限 30人满 私信报名 ~


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
手把手教你用PowerBI完成动态帕累托分析
5.2.10 PowerBI 动态指标TopN的切换
PowerBI作图技巧:创建度量值进行动态指标分析
JS动态添加div,然后在div中添加元素
【Friday BI Fly】2016年05月27日从几个KPI看懂零售行业数据分析
再发“盘中选股(动态买卖)”指标、选股双公式源码 是盘中抓涨停和大涨股票神奇武器 - 公明...
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服