zoukankan      html  css  js  c++  java
  • 数据可视化之分析篇(一)使用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,创建指标数据和累计比例

  • 相关阅读:
    <把时间当做朋友>读书笔记
    C语言-第12课
    C语言-第13课
    C语言-第11课
    python-第三课-字符串详解
    C语言-第10课
    C语言-第9课
    C语言-第8课
    C语言-第7课-enum和typedef分析
    C语言-第6课
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/12936031.html
Copyright © 2011-2022 走看看