深入浅出DAX:数据分析

news2024/11/22 19:38:51

图片

深入浅出DAX:数据分析

01、区间分析

1. 数据区间分析

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

图片

■ 图1 区间辅助表

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

M.区间次数 =
VAR A =
    SELECTEDVALUE ( '区间辅助表'[起始值] )
VAR B =
    SELECTEDVALUE ( '区间辅助表'[结束值] )
VAR C =
    CALCULATE (
        COUNT ( DK[包装方式] ),
        FILTER ( DK, DK[入库] > A && DK[入库] <= B )
    )
RETURN
    C

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

图片

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

2. 频次分析

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

频次表 = DATATABLE (
    "频次", STRING,
    "最小值", INTEGER,
    "最大值", INTEGER,
    {
    { "1-2次", 1, 2 },
    { "3-4次", 3, 4 },
    { "5-6次", 5, 6 }
    }
)

返回的值如图3所示。

图片

■ 图3 频次表

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

M.订单次数 =
-- VAR A = MAX ( '日期'[日期] )
VAR B = SELECTEDVALUE ( '频次表'[最小值] )
VAR C = SELECTEDVALUE ( '频次表'[最大值] )
VAR D =
    SUMMARIZE (
        '订单',
        '订单'[订单来源],
        "订单数量",
    CALCULATE (
                COUNT ( '订单'[订单来源] )
                -- , FILTER ( ALL ( '日期' ), '日期'[日期] <= A )
        )
    )
VAR E =
    CALCULATE (
        COUNTROWS (
            FILTER ( D, [订单数量] >= B && [订单数量] <= C )
        )
    )
RETURN
    E

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

图片

■ 图4 订单次数统计

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

02、ABC分析

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

1. 动态ABC分析(一)

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

静态ABC =
SUMMARIZECOLUMNS (
    '运单'[产品],
    '运单'[包装方式],
    "数量和", SUM ( '运单'[数量] )
)

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

累计值 =
VAR A = '静态ABC'[数量和]
RETURN
    CALCULATE (
       SUM ( [数量和] ),
        FILTER (
          '静态ABC',
            '静态ABC'[数量和] >= A
        )
    )

累计百分比 = DIVIDE([累计值],SUM([数量和]))

ABC分类 =
SWITCH (
    TRUE (),
    [累计百分比] <= 0.7, "A",
    [累计百分比] <= 0.9, "B",
    "C"
)

返回的值如图5所示。

图片

■ 图5 在表中新增3列

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

M.数量和 = SUM('静态ABC'[数量和])

M.ABC识别 =
SWITCH (
   TRUE (),
    SELECTEDVALUE ( '静态ABC'[ABC分类] ) = "A", "GREEN",
    SELECTEDVALUE ( '静态ABC'[ABC分类] ) = "B", "YELLOW",
    "RED"
)

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

图片

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

返回的值如图7所示。

图片

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

2. 动态ABC分析(二)

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

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

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

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

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

M.累计百分比 =
VAR A = [M.数量和]
VAR B =
    CALCULATE (
        [M.数量和],
        FILTER ( ALL ( '静态ABC'[产品] ), [M.数量和] >= A )
    )
RETURN
    DIVIDE (
        B,
        CALCULATE ( [M.数量和], ALL ( '静态ABC'[产品] ) )
    )

将图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值

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

M.R1间隔天数 =
DATEDIFF (
    MAX ( '运单'[发车时间] ),
    MAXX (
        ALL ( '运单'[发车时间] ),
        '运单'[发车时间]
    ),
    DAY
)

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

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

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

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

4. 计算F值

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

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

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

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

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

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

5. 计算M值

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

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

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

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

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

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

6. RFM客户价值归类

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

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

7. RFM客户价值分析

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

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

返回的值如图12所示。

图片

■ 图12 RFM客户价值分析

8. 可视化分析

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

M.RFM订单来源 =
IF (
    HASONEVALUE ( 'RFM客户价值分析表'[客户类型] ),
    CONCATENATEX (
        VALUES ( 'RFM客户价值分析表'[订单来源] ),
        'RFM客户价值分析表'[订单来源],
        "、"
    )
)

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

图片

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1044630.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

POJ 2991 Crane 线段树

一、题目大意 我们有一台起重机的机械臂&#xff0c;它由多个节相连组成&#xff0c;如下所示。 起初的时候&#xff0c;所有的节之间的角度都是180度&#xff0c;是竖直的&#xff0c;我们可以扭转其中任意两个节的角度&#xff0c;每一次移动后题目需要输出题目最后一个点相…

干货 | 工商业用户负荷分析与预测系统项目

以下内容整理自2023年夏季学期大数据能力提升项目《大数据实践课》同学们所做的期末答辩汇报。 我们将从六个方面进行展示。 第一部分是项目背景与需求分析。在“双碳”目标的大背景下&#xff0c;能源电力行业面临着深刻的变革&#xff0c;负荷预测作用也更加突出。虚拟电厂由…

蓝牙无线IP网络多功能多媒体音柱带遥控

SV-29810T-蓝牙无线IP网络多功能多媒体音柱带遥控 蓝牙无线IP网络多功能多媒体音柱SV-29810T产品用途&#xff1a; ◆室外室内豪华型防水音柱式一体化网络音频解码扬声器&#xff0c;用于广播分区音频解码、声音还原作用◆应用场地如火车站、地铁、教堂、工厂、仓库、公园停车…

lv5 嵌入式开发-7 有名管道和无名管道

目录 1 进程间通信介绍 2 无名管道 2.1 无名管道特点 ​编辑 2.2 读无名管道 2.3 写无名管道 3 有名管道 3.1 有名管道特点 3.2 写有名管道 3.3 读有名管道 掌握&#xff1a;进程间通信方式介绍、无名管道特点、无名管道创建、无名管道读写特性&#xff1b;有名管道…

【面试题】——JavaIO篇(23题)

文章目录 1.什么是Java IO&#xff1f;2.如何从数据传输方式理解IO流&#xff1f;3.Java IO设计上使用了什么设计模式&#xff1f;4.什么是Java NIO&#xff1f;5.什么时BIO?6.什么是AIO?7.你怎么理解同步IO和异步IO?8.你怎么理解阻塞IO和非阻塞IO?9.IO中的输入流和输出流有…

Python项目实战:多线程并行计算 + 多进程并行计算

文章目录 一、简介&#xff1a;【进程 多进程】 【线程 多线程】1.1、系统支持的CPU核心处理器1.2、核心处理器的参数解析&#xff1a;12th Gen Intel( R ) Core( TM ) i7-12700 2.10 GHz 二、函数详解2.0、计算CPU核心数&#xff1a;os.cpu_count() mp.cpu_count()2.1、用…

MongoDB 解析:灵活文档数据库与 Docker Compose 部署

MongoDB 是一款开源、高性能的 NoSQL 数据库&#xff0c;以其无模式的文档存储格式&#xff08;BSON&#xff09;而著称&#xff0c;广泛应用于众多开源项目&#xff0c;包括但不限于 Yapi 等。它在大规模数据存储和实时数据处理方面表现出色&#xff0c;因此备受青睐。在本文中…

C++学习——优先级队列模拟实现与仿函数初步认识

目录 ​编辑 一&#xff0c;优先级队列 二&#xff0c;实现 1.构造priority_queue类 2.简单的top()与size()还有empty()函数 3.push函数 4.pop函数 5.构造函数 6.测试 三&#xff0c;仿函数 1.介绍 2.使用 一&#xff0c;优先级队列 优先级队列——priority_queue。这…

【C++】gnustl_static 与 c++_shared 的区别

参考&#xff1a;GNU与cSTL的区别与联系-爱代码爱编程​ gnustl_static 与 c_shared 的区别&#xff1a; 不同版本的 STL TSL是一个与STL兼容的多线程支持库。 STLport是一个可移植、高度兼容的STL实现。 SGI STL是最早的STL实现之一&#xff0c;对STL的发展起到了重要的作用…

深入MySQL数据库进阶实战:性能优化、高可用性与安全性

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 MySQL是世界上最流行的开…

Windows 下 MySQL 8.1.0 安装及配置图文指南,快速搭建实验学习环境

目录 下载 MySQL安装 MySQL配置 MySQL修改密码配置环境变量 卸载 MySQL开源项目微服务商城项目前后端分离项目 下载 MySQL 访问 MySQL 下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/ 下载 MySQL 时&#xff0c;你可以选择 ZIP 包或 MSI 安装&#xff1a; ZIP包…

赴日IT课程分享 如何尽快就职日本IT公司?

想要做赴日IT工作&#xff0c;我们先要搞清楚一个问题&#xff0c;那就是日本IT行业的缺口真的很大吗&#xff1f;答案是肯定的&#xff0c;对于有3-5年实际开发经验&#xff0c;能独立做开发&#xff0c;日语口语也好&#xff0c;不需要协助就能独立跟日本人交流的人&#xff…

DeepFace【部署 01】轻量级人脸识别和面部属性分析框架安装使用详解(网盘分享模型文件)

DeepFace安装使用 1.安装1.1 官方的三种方式1.2 使用的方式 2.使用2.1 模型文件下载2.2 Facial Recognition2.3 Face Verification2.4 Face recognition2.5 Embeddings2.6 Face recognition models2.7 Similarity2.8 Facial Attribute Analysis2.9 Face Detectors 3.总结 Githu…

知网G4期刊-基础教育论坛-如何投稿?

《基础教育论坛》知网 3版5000字符 24年上半年刊期&#xff0c;可收中小学基础教育&#xff0c;幼儿教育等教育全科文章。 《基础教育论坛》主要刊登有关教育教学理论探讨及课程改革、教学改革、考试改革研究等方面的文章&#xff0c;为广大基础教育工作者提供学术交流的…

Lua学习笔记:debug.sethook函数

前言 本篇在讲什么 使用Lua的debug.setHook函数 本篇需要什么 对Lua语法有简单认知 依赖Sublime Text工具 本篇的特色 具有全流程的图文教学 重实践&#xff0c;轻理论&#xff0c;快速上手 提供全流程的源码内容 ★提高阅读体验★ &#x1f449; ♠ 一级标题 &…

第五章:C语言的数组

文章目录 1、数组的理解2、各类数组的定义3、变长数组4、字符数组 1、数组的理解 一维数组&#xff1a;比如定义一个int a[3];,那么可以将其看成两部分&#xff0c;a【3】为①&#xff0c;int为②。意思就是有一个数组名字为a&#xff0c;里面包含3个&#xff08;池&#xff0…

QT5自定义下拉框为QTreeView类型(树形分上下级)的下拉框(QComboBox)(超详细步骤)

项目开发中&#xff0c;很可能简单的QComboBox满足不了需求&#xff0c;就需要自定义QComboBox。 先看效果。 自定义ComboBox 1、先建立一个project&#xff0c;命名为CustomComboBox,建立一个project的过程不细说了。建立后的工程目录如下图&#xff1a; 2、在项目名CustomCo…

React 全栈体系(十六)

第八章 React 扩展 五、Context 1. 代码 /* index.jsx */ import React, { Component } from react import ./index.css//创建Context对象 const MyContext React.createContext() const {Provider,Consumer} MyContext export default class A extends Component {state …

蓝桥杯每日一题20223.9.26

4407. 扫雷 - AcWing题库 题目描述 分析 此题目使用map等都会超时&#xff0c;所以我们可以巧妙的使用哈希模拟散列表&#xff0c;哈希表初始化为-1首先将地雷读入哈希表&#xff0c;找到地雷的坐标在哈希表中对应的下标&#xff0c;如果没有则此地雷的位置第一次出现&#…

2023彩虹商城自助发卡商城+卡卡云模板+wxstore模板

2023彩虹商城自助发卡商城免授权版卡卡云模板wxstore模板 全新SUP模板/知识付费模板/卡卡云模板&#xff0c;首页美化&#xff0c;登陆页美化&#xff0c;修复了pc端购物车页面显示不正常的问题。