• 深入浅出DAX:数据分析


    图片

    深入浅出DAX:数据分析

    01、区间分析

    1. 数据区间分析

    Power BI中,选择“主页”→“输入数据”,创建“区间辅助表”,如图1所示。

    图片

    ■ 图1 区间辅助表

    创建度量值M.区间次数,表达式如下:

    1. M.区间次数 =
    2. VAR A =
    3.     SELECTEDVALUE ( '区间辅助表'[起始值] )
    4. VAR B =
    5.     SELECTEDVALUE ( '区间辅助表'[结束值] )
    6. VAR C =
    7.     CALCULATE (
    8.         COUNT ( DK[包装方式] ),
    9.         FILTER ( DK, DK[入库] > A && DK[入库] <= B )
    10.     )
    11. RETURN
    12.     C

    在可视化区域选择“表”,将区间辅助表的区间、起始值、结束值及度量值M.区间次数拖入“值”区域。相关设置及返回的值如图2所示。

    图片

    ■ 图2  统计入库量在各所属区间内出现的次数

    2. 频次分析

    采用DATATABLE()函数,创建频次表,表达式如下:

    1. 频次表 = DATATABLE (
    2.     "频次", STRING,
    3.     "最小值", INTEGER,
    4.     "最大值", INTEGER,
    5.     {
    6.     { "1-2次"12 },
    7.     { "3-4次"34 },
    8.     { "5-6次"56 }
    9.     }
    10. )

    返回的值如图3所示。

    图片

    ■ 图3 频次表

    在Power BI中,选择“主页”→“Excel工作簿”,打开“D:\深入浅出DAX\2数据源\DEMO.xlsx”,在导航器中选择订单及日期表,单击“加载”按钮。创建度量值M.订单次数,表达式如下:

    1. M.订单次数 =
    2. -- VAR A = MAX ( '日期'[日期] )
    3. VAR B = SELECTEDVALUE ( '频次表'[最小值] )
    4. VAR C = SELECTEDVALUE ( '频次表'[最大值] )
    5. VAR D =
    6.     SUMMARIZE (
    7.         '订单',
    8.         '订单'[订单来源],
    9.         "订单数量",
    10.     CALCULATE (
    11.                 COUNT'订单'[订单来源] )
    12.                 -- , FILTER ( ALL'日期' ), '日期'[日期] <= A )
    13.         )
    14.     )
    15. VAR E =
    16.     CALCULATE (
    17.         COUNTROWS (
    18.             FILTER ( D, [订单数量] >= B && [订单数量] <= C )
    19.         )
    20.     )
    21. RETURN
    22.     E

    在可视化区域选择“表”,将频次表中的频次及度量值M.订单次数拖入“值”区域。返回的值如图4所示。

    图片

    ■ 图4 订单次数统计

    如需加入'日期'[日期]为切片器,只需将度量值M.订单次数中的注释符号(表达式中语句前面的--)取消。

    02、ABC分析

    ABC分析起源于80/20分析,在质量管理、库存管理等方面应用较为广泛。ABC分析是一种分类管理技术,将对象划分为重要的A类、一般的B类及不重要的C类。

    1. 动态ABC分析(一)

    新建静态ABC表,表达式如下:

    1. 静态ABC =
    2. SUMMARIZECOLUMNS (
    3.     '运单'[产品],
    4.     '运单'[包装方式],
    5.     "数量和", SUM'运单'[数量] )
    6. )

    在静态ABC表中,新建计算列累计值、累计百分比、ABC分类,表达式如下:

    1. 累计值 =
    2. VAR A = '静态ABC'[数量和]
    3. RETURN
    4.     CALCULATE (
    5.        SUM ( [数量和] ),
    6.         FILTER (
    7.           '静态ABC',
    8.             '静态ABC'[数量和] >= A
    9.         )
    10.     )
    11. 累计百分比 = DIVIDE([累计值],SUM([数量和]))
    12. ABC分类 =
    13. SWITCH (
    14.     TRUE (),
    15.     [累计百分比] <= 0.7"A",
    16.     [累计百分比] <= 0.9"B",
    17.     "C"
    18. )

    返回的值如图5所示。

    图片

    ■ 图5 在表中新增3列

    创建度量值M.数量和、M.ABC识别,表达式如下:

    1. M.数量和 = SUM('静态ABC'[数量和])
    2. M.ABC识别 =
    3. SWITCH (
    4.    TRUE (),
    5.     SELECTEDVALUE ( '静态ABC'[ABC分类] ) = "A""GREEN",
    6.     SELECTEDVALUE ( '静态ABC'[ABC分类] ) = "B""YELLOW",
    7.     "RED"
    8. )

    在可视化区域,选择“折线和簇状柱形图”,相关设置如图6所示。

    图片

    ■ 图6 添加与设置视觉对象(1)

    返回的值如图7所示。

    图片

    ■ 图7 添加与设置视觉对象(2)

    2. 动态ABC分析(二)

    在运单表中创建计算列列.年,表达式如下:

    运.年 = YEAR('运单'[发车时间])

    在静态ABC表中,增加'运单'[运.年]。表达式如下:

    1. 静态ABC =
    2. SUMMARIZECOLUMNS (
    3.     '运单'[运.年], //新增的列,方便后续的多维度动态分析
    4.     '运单'[产品],
    5.     '运单'[包装方式],
    6.     "数量和", SUM'运单'[数量] )
    7. )

    创建度量值M.累计百分比,表达式如下:

    1. M.累计百分比 =
    2. VAR A = [M.数量和]
    3. VAR B =
    4.     CALCULATE (
    5.         [M.数量和],
    6.         FILTER ( ALL'静态ABC'[产品] ), [M.数量和] >= A )
    7.     )
    8. RETURN
    9.     DIVIDE (
    10.         B,
    11.         CALCULATE ( [M.数量和], ALL'静态ABC'[产品] ) )
    12.     )

    将图8的“折线和簇状柱形图”中的“行值”更换为度量值M.累计百分比。在可视化区域新增两个切片器,“字段”分别为静态ABC表中的运.年、包装方式。相关设置及返回值如图9所示。

    图片

    ■ 图9 添加与设置视觉对象(3)

    选择切片器,返回的值如图10所示。

    图片

    ■ 图10 添加与设置视觉对象(4)

    03、RFM分析

    RFM模型是衡量客户价值和客户创造利益能力的重要工具和手段,RFM是最近一次消费时间间隔(Recency),消费频率(Frequency)、消费金额(Monetary)三个指标首字母组合,其中,R值具备望小特性,F值和M值为具备望大特性,即R值越小越好而F值和M值则是越大越好。

    1. 模型设计

    在管理过程中,对R、F、M这三个因子进行高低二水平的全因子组合设计,则2k全因子组合设计后可形成8种(23=8)组合方案。若对其中的低水平用1表示、高水平用2表示,则组合设计后的RFM客户价值分析模型见表1。

    ■ 表1 RFM价值分析模型

    图片

    R值的高、低水平的判定逻辑与计算顺序:

    (1)用事实表中的最大日期与该客户的最近活跃日期相比较,获取日期的间隔天数。

    (2)将所有客户的日期间隔天数进行求平均,得到事实表中R值的整体平均值。

    (3)以整体均值为依据,对各客户的间隔天数进行1(低水平)2(高水平)代码化。

    采用类似的方法对F值及M值代码化,然后将代码化的R值、F值、M值进行组合,最终形成类似222、212这样的RFM组合码,由此得到该客户的价值分类,其中,M代码为2的为重要客户,否则为一般客户。RF组合码为22的属价值客户,RF组合码为11的属已流失客户。RF组合码为21的需深耕以提高其消费频率的客户;RF组合码为12的属近期无交易需唤回以继续消费的客户。

    2. 数据准备

    在Power BI中,通过“主页”→“Excel工作簿”,将DEMO.xlsx中的订单、运单、RFM表进行加载并在订单表与运单表中创建关联,主键是订单表的运单编号,外键是运单表的运单编号。由于模型中无客户字段,现暂以订单表中的“订单来源”字段比拟客户进行RFM分析。相关数据模型与表格如图10-35所示。

    图片

    ■ 图11 RFM数据模型

    3. 计算R值

    计算各客户最近活跃日的间隔天数,表达式如下:

    1. M.R1间隔天数 =
    2. DATEDIFF (
    3.     MAX ( '运单'[发车时间] ),
    4.     MAXX (
    5.         ALL'运单'[发车时间] ),
    6.         '运单'[发车时间]
    7.     ),
    8.     DAY
    9. )

    计算R值的整体平均值,表达式如下:

    1. M.R2整体平均天数 =
    2. AVERAGEX (
    3.     ALLSELECTED ( '订单'[订单来源] ),
    4.     [M.R1间隔天数]
    5. )

    对R值的高低水平代码化,表达式如下:

    1. M.R3R值代码化 =
    2. IFERROR(
    3.     IF ([M.R1间隔天数] < [M.R2整体平均天数],2,1),
    4. BLANK()
    5. )

    4. 计算F值

    计算各客户最近活跃的频率数,表达式如下:

    M.F1频数 = DISTINCTCOUNT('运单'[订单编号])

    计算F值的整体平均值,表达式如下:

    1. M.F2整体平均频数 =
    2. AVERAGEX (
    3.     ALLSELECTED ( '订单'[订单来源] ),
    4.     [M.F1频数]
    5. )

    对F值的高低水平代码化,表达式如下:

    1. M.F3F值代码化 =
    2. IFERROR(
    3.     IF ( [M.F1频数] > [M.R2整体平均天数],2,1),
    4.     BLANK ()
    5. )

    5. 计算M值

    计算各客户最近活跃的数量额,表达式如下:

    M.M1活跃额 = SUM('运单'[数量])

    计算M值的整体平均值,表达式如下:

    1. M.M2整体均额 =
    2. AVERAGEX (
    3.     ALLSELECTED ( '订单'[订单来源] ),
    4.     [M.M1活跃额]
    5. )

    对M值的高低水平代码化,表达式如下:

    1. M.M3M值代码化 =
    2. IFERROR(
    3.     IF ( [M.M1活跃额] > [M.M2整体均额],2,1),
    4.     BLANK ()
    5. )

    6. RFM客户价值归类

    对客户的RFM价值进行归类。

    1. M.RFM价值归类 =
    2. VAR A = [M.R3R值代码化] & [M.F3F值代码化] & [M.M3M值代码化]
    3. RETURN
    4.     CALCULATE ( VALUES'RFM表'[客户价值] ), 'RFM表'[RFM] = A )

    7. RFM客户价值分析

    创建表,对客户进价价值分析。

    1. RFM客户价值分析表 =
    2. ADDCOLUMNS (
    3.     SUMMARIZE ( '订单''订单'[订单来源] ),
    4.     "R天", [M.R1间隔天数],
    5.     "F数", [M.F1频数],
    6.     "M量", [M.M1活跃额],
    7.     "RFM值",
    8.         [M.R3R值代码化] & [M.F3F值代码化] & [M.M3M值代码化],
    9.     "客户类型", [M.RFM价值归类]
    10. )

    返回的值如图12所示。

    图片

    ■ 图12 RFM客户价值分析

    8. 可视化分析

    创建度量值M.RFM订单来源,表达式如下:

    1. M.RFM订单来源 =
    2. IF (
    3.     HASONEVALUE ( 'RFM客户价值分析表'[客户类型] ),
    4.     CONCATENATEX (
    5.         VALUES'RFM客户价值分析表'[订单来源] ),
    6.         'RFM客户价值分析表'[订单来源],
    7.         "、"
    8.     )
    9. )

    在Power BI可视化区域,单击矩阵图。将RFM客户价值分析表中的客户类型拖入“行”区域,勾选度量值M.RFM订单来源。相关设置及返回的值如图13所示。

    图片

    ■ 图13 视觉对象设置及返回的值

  • 相关阅读:
    nodejs+Vue+python电子商务电商后台管理系统java
    leetcode刷题——单链表
    基于SSM实现的艺术品鉴定管理系统+App
    kafka笔记(三):broker-工作流程/节点服役和退役/副本/文件存储/高效读写
    信息通信企业开展数据安全管理工作的指引与实践
    ant组件库 message组件只响应了一次就失效了
    前端开发如何做新手引导
    Python:实现radix sort基数排序算法(附完整源码)
    r语言plot函数
    公共4G广播音柱有哪些用处
  • 原文地址:https://blog.csdn.net/qq_41640218/article/details/133338280