• 数据可视化之分析篇(一)使用Power BI进行动态帕累托分析


    https://zhuanlan.zhihu.com/p/57763423

    通过简单的点击交互,就能进行动态分析发现见解,才是我们需要的,恰好这也是 PowerBI 所擅长的。

    就帕累托分析来说,能从不同的角度快速发现关键因素、以及可以动态设定关键因素的阈值,就是我们需要的。本文通过一个示例来看看如何生成一个动态的帕累托图,先看看最终效果,

    这样分析是不是很简单,下面就来看看是如何制作的。

    数据为虚拟的某连锁店的电子产品销售明细,以及与之关联的产品和销售地点维度,和一个对应的日期表,建立关系图如下,

     

    要分析的维度:

    1,时间维度:年份

    2,财务指标:收入和利润

    3,销售细分:按地区和产品明细


     

    时间维度

     

    年度指标比较简单,销售明细表中有日期数据,直接根据日期表中的年度创建一个切片器就行了。

    财务指标

    先建两个度量值:

     

    收入 = SUM('销售明细'[销售额])
    利润贡献 = SUM('销售明细'[毛利])

     

    然后在PowerBI Desktop中新建表,只有一个字段[财务指标],数据为收入和利润,

     

    按字段[财务指标]制作切片器,然后写度量值[指标数据],

     

    指标数据 =
    SWITCH(TRUE(),
    SELECTEDVALUE('财务指标'[财务指标])="收入",[收入],
    SELECTEDVALUE('财务指标'[财务指标])="利润",[利润贡献],
    BLANK()
    )

     

    该度量值判断切片器的选择,如果选择的是收入,就汇总收入数据;如果选择的是利润,就汇总利润。

     

    产品和地区维度

     

    同上面的思路类似,把产品明细和地区明细整合到一起,如下图,

     

    如果数据量很小,手工整理也很快,不过在这里依然可以用DAX实现,在【建模】选项卡下,点击"新表"(参考:PowerBI Desktop中新建表的使用场景),在编辑栏输入:

     

    分析维度 =
    VAR item1 = SELECTCOLUMNS( ADDCOLUMNS( DISTINCT( '城市'[城市] ) , "分析维度" , "地区" ) , "分析维度" , [分析维度],"维度明细",[城市] )
    VAR item2 = SELECTCOLUMNS( ADDCOLUMNS( DISTINCT( '产品明细'[产品名称]) , "分析维度" , "产品" ) ,"分析维度" , [分析维度], "维度明细" , [产品名称] )
    RETURN UNION( item1 , item2 )

    然后上图中的表格就生成了,根据该表的字段[分析维度]创建切片器。

    至此,三个分析维度已经建立完成,并体现在报表左侧的三个切片器上。

     

     


     

    制作帕累托图

    步骤和上一篇文章类似,只是由于分析维度更多,需要更细化的处理。各个切片器之间要相互配合,考虑上下文的影响,以下的DAX公式稍微长一点,需要根据每个函数慢慢理解,按照这个实例学习这些函数其实也是个不错的方式。

    将【折线和簇状柱形图】拖到画布上,将前面创建的分析维度表中的[维度明细]拖入到共享轴。

    创建度量值[分析数据]拖入到列值框中,

     

    分析数据 =
    VAR item3=TREATAS( VALUES('分析维度'[维度明细]),'城市'[城市])
    VAR item4=TREATAS(VALUES('分析维度'[维度明细]),'产品明细'[产品名称])
    RETURN
    SWITCH(TRUE(),
    SELECTEDVALUE('分析维度'[分析维度])="地区",
    CALCULATE([指标数据],item3),
    SELECTEDVALUE('分析维度'[分析维度])="产品",
    CALCULATE([指标数据],item4),
    BLANK()
    )

     

    下一步就是获得累计占比的数据,创建度量值如下,

     

    分析数据合计 =
    SWITCH(TRUE(),
    SELECTEDVALUE('财务指标'[财务指标])="收入",
    CALCULATE([收入],ALLSELECTED('销售明细'[销售额])),
    SELECTEDVALUE('财务指标'[财务指标])="利润",
    CALCULATE([利润贡献],ALLSELECTED('销售明细'[毛利])),
    BLANK()
    )

     

    数据占比 = DIVIDE([分析数据],[分析数据合计])

     

    累计占比 =
    VAR cur_rate=[数据占比]
    RETURN
    CALCULATE([数据占比],FILTER(ALL('分析维度'[维度明细]),[数据占比]>=cur_rate))

     

    将[累计占比]拖入到列值框中,帕累托图就制作好了,


     

    ABC比例设置

     

    帕累托分析也成为ABC分析,一般按照70%、20%和10%的比例来划分,或者按照二八定律的80%和20%划分,当然这些都是一个概数而已,并不是一定要这样划分,实际分析时还要根据情况自行调整。

    在【建模】选项卡下,点击"新建参数"(参考:创建PowerBI「参数」轻松搞定动态分析),建立三个参数如下:

     

    参数a = GENERATESERIES(1, 100, 1)
    参数b = GENERATESERIES(0, 100, 1)
    参数c = GENERATESERIES(0, 100, 1)

     

    同时生成三个切片器,通过这三个切片器来控制这三个参数的数值大小,然后就可以计算出每一类的相对占比,

     

    A类比例 = DIVIDE([参数a值],[参数a值]+[参数b值]+[参数c值])
    B类比例 = DIVIDE([参数b值],[参数a值]+[参数b值]+[参数c值])
    C类比例 = DIVIDE([参数c值],[参数a值]+[参数b值]+[参数c值])

     

    利用这三个度量值生成一个环形图,这样动态的ABC比例就设计好了,

     

     

    判断因素的所属分类

    建立度量值,

    数据所属分类 =
    VAR cur_leji=[累计占比]
    RETURN
    SWITCH(TRUE(),
    cur_leji<=[A类比例],"A",
    cur_leji<=[A类比例]+[B类比例],"B",
    "C"
    )

     

    至此该模型的技术操作完成,剩下的就是一些可视化方面的修饰、格式调整等,以及按照ABC的分类动态配色。

    该帕累托模型在主要的分析维度上都已考虑到,可以在实际分析中进行分解套用。

     

    总结:

    进行动态帕累托分析的主要步骤:

    1,整理需要分析的维度

    2,设置ABC比例参数

    3,创建指标数据和累计比例

  • 相关阅读:
    461. Hamming Distance
    342. Power of Four
    326. Power of Three
    368. Largest Divisible Subset java solutions
    95. Unique Binary Search Trees II java solutions
    303. Range Sum Query
    160. Intersection of Two Linked Lists java solutions
    88. Merge Sorted Array java solutions
    67. Add Binary java solutions
    14. Longest Common Prefix java solutions
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/12936031.html
Copyright © 2020-2023  润新知