深入浅出DAX:购买推荐及产品ABC分类分析

深入浅出DAX:购买推荐及产品ABC分类分析

DAX运算求值的三步骤。首先是检测筛选,然后将筛选功能应用于基础表格,最后计算结果。DAX中的筛选器函数是复杂且功能强大的函数。例如筛选函数可用于操作数据上下文来创建动态计算。

01、使用细节说明

在DAX中,NOT用于求反操作,IN用于或操作,但不能像SQL中直接NOT IN直接紧邻操作。以下是DAX中在IN 语句之前使用 NOT的应用举例,表达式如下:

M.其他收货人:=
CALCULATE (SUM ( '运单'[数量] ),NOT ('收货'[收货人] IN VALUES ( '收货'[收货人]))
)

 返回的值如图1所示。

■ 图1  NOT与IN的结合应用

IN后面是允许连接两列或多列,其中列表用{}构造,而每行的数据则用括号()构造,其中的括号()代表的是元组,元组内包含的是每行的数据,元组内的数据用逗号区隔。应用举例:

('装货'[包装方式], '装货'[产品]) IN {("桶装","尿素"),("箱装","蛋糕纸")}

以上表达式同样可以置于CALCULATE()函数中参与筛选应用的。

在DAX中使用迭代函数时,必须注意到第1个参数的表是来自数据模型的一端还是多端,避免因迭代类聚合函数忽略行上下文而产生的总计值错误。应用举例,创建度量值M.总成本1和M.总成本2,表达式如下:

M.总成本1:= SUMX('合同',
SUMX('运单','运单'[成本]*'运单'[数量]))//该表达式返回的总计值有误M.总成本2 := SUMX('合同',
CALCULATE(
SUMX('运单','运单'[数量]*'运单'[成本])))

 创建透视表,将合同表的产品拖入行标签,勾选度量值M.总成本1和M.总成本2,返回的值如图2所示。

■ 图2 在模型的一端运用聚合函数

02、购买与推荐分析

CALCULATE()函数的第1个参数返回的结果为值,常用于COUNTROWS()、SUM()等聚合函数;第1个参数会依据紧接其后的各筛选器参数所修改的上下文来计算,第2个参数可以为表。表达式如下:

M.共有产品 :=
CALCULATE (SUM('订单'[数量]),INTERSECT (VALUES ( '订单'[产品] ),VALUES ( '运单'[产品] ))
)

 除第1个参数外,其他参数均为表。应用举例,表达式如下:

M.共有产品B :=
CALCULATE (SUM('运单'[数量]),INTERSECT (VALUES ( '订单'[产品] ),VALUES ( '运单'[产品] )),INTERSECT (VALUES ( '装货'[包装方式] ),VALUES ( '运单'[包装方式] ))
)

订单表中共11个产品(数量和205);在运单表中共10个产品(没有的产品为包装绳,数量为2)。返回的值如图3所示。

 在CALCULATE()的第2个参数中,利用FILTER()参数部分扩大或缩小筛选上下文的范围。表达式如下:

M.度量ZF:=
CALCULATE (DISTINCTCOUNT ( '运单'[运单编号] ),FILTER (ADDCOLUMNS (
VALUES ( '运单'[运单编号] ),
"行数", COUNTROWS ( '运单' )
),[行数] > 0)
)

 返回的值如图4所示。

■ 图4 CALCULATE()中的FILTER()参数

03、产品ABC分类分析

在DAX中ABC分类分析一般通过三步来完成的。第1步:利用计算列或度量值计算累计值;第2步:依据累计值完成累计占比;第3步:对占比进行ABC分类。创建度量值M.运单量、M.累计运单量、M.累计占比、M.ABC分类。表达式如下:

M.运单量:=SUM('运单'[数量])M.累计运单量 :=
VAR A = [M.运单量]
VAR B =ADDCOLUMNS ( ALL ( '运单'[产品] ), "运量", [M.运单量] )
RETURNIF (HASONEVALUE ( '运单'[产品] ),SUMX ( FILTER ( B, [运量] >= A ), [运量] ))M.累计占比 :=
DIVIDE ([M.累计运单量],CALCULATE ( [M.运单量], ALL ( '运单'[产品] ) )
)M.ABC分类 :=
IF (HASONEVALUE ( '运单'[产品] ),SWITCH (TRUE (),[M.累计占比] <= 0.7, "A",[M.累计占比] <= 0.9, "B","C")
)

 创建透视表,将运单表中的产品拖入行区域,勾选度量值M.运单量、M.累计运单量、M.累计占比、M.ABC分类。返回的值如图5所示。

■ 图5 产品的ABC分类分析

04、产品期初与结存分析

在DK表中,创建计算列库.年月,表达式如下:

库.年月:= YEAR('DK'[日期])*100+MONTH('DK'[日期])

 结存分析的基本原理:上期的期末等于本期的期初。创建度量值M.入库量、M.出库量、M.期初量、M.结存量,表达式如下:

M.入库量:= SUM(DK[入库])
M.出库量:= SUM(DK[出库])M.期初量:=
CALCULATE ([M.入库量] - [M.出库量],FILTER (ALL ('DK'[库.年月] ),'DK'[库.年月] < MIN ( 'DK'[库.年月] ))
)M.结存量:= [M.期初量]+[M.入库量]-[M.出库量]

 创建透视表,将库.年月拖入行标签,勾选度量值M.期初量、M.入库量、M.出库量、M.结存量。返回的值如图6所示。

 ■ 图6 出入库期初与结存分析

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

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

相关文章

Spring Boot如何配置CORS支持

Spring Boot如何配置CORS支持 CORS&#xff08;跨源资源共享&#xff09;是一种Web浏览器的安全性功能&#xff0c;用于控制网页上的脚本文件从不同的源加载其他网页资源。在开发现代Web应用程序时&#xff0c;通常需要跨域请求不同的资源&#xff0c;如API服务或其他Web应用程…

前端系列-1 HTML+JS+CSS基础

背景&#xff1a; 前端系列会收集碎片化的前端知识点&#xff0c;作为自己工作和学习时的字典&#xff0c;欢迎读者收藏和使用。 笔者是后端开发&#x1f636;前端涉猎不深&#xff0c;因此文章重在广度和实用&#xff0c;对原理和性能不会过多深究。 1.html 1.1 html5网页结…

嵌入式处理趋势,第一部分:超集成MCU

当今的嵌入式微控制器&#xff08;MCU&#xff09;是协同和创新的惊人例子。单个芯片上可容纳30,000至2百万个门&#xff0c;直到最近&#xff0c;各种集成的组件和模块都被视为独立的高级IC。 例如&#xff0c;当前典型的MCU设备&#xff08;下面的图1&#xff09;可能包含以…

Quarto 入门教程 (1):简单介绍和资料汇总

本推文是 “手把手教你使用 Quarto 构建文档” 教程的第一部分&#xff0c;本文先介绍 Quarto 构建文档的原理&#xff1b;可创建的文档类型&#xff1b;对应的参考资源分享。 下一部分&#xff0c;会手把手介绍如何使用它&#xff08;下次推文吧&#xff5e;&#xff09;。 …

Springboot使用Aop保存接口请求日志到mysql(及解决Interceptor拦截器中引用mapper和service为null)

一、Springboot使用Aop保存接口请求日志到mysql 1、添加aop依赖 <!-- aop日志 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency> 2、新建接口保存数据…

排序算法之【归并排序】

&#x1f4d9;作者简介&#xff1a; 清水加冰&#xff0c;目前大二在读&#xff0c;正在学习C/C、Python、操作系统、数据库等。 &#x1f4d8;相关专栏&#xff1a;C语言初阶、C语言进阶、C语言刷题训练营、数据结构刷题训练营、有感兴趣的可以看一看。 欢迎点赞 &#x1f44d…

chrome窗口

chrome 窗口的层次&#xff1a; 父窗口类名&#xff1a;Chrome_WidgetWin_1 有两个子窗口&#xff1a; Chrome_RenderWidgetHostHWNDIntermediate D3D Window // 用于匹配 Chrome 窗口的窗口类的前缀。 onst wchar_t kChromeWindowClassPrefix[] L"Chrome_WidgetWin_…

《低代码指南》——低代码维格云服务菜单

简介​ 快速了解付费客户能够获得维格服务团队哪些服务,本篇内容不包含使用免费试用版本的客户。 了解维格表产品价格与功能权益:戳我看价格与权益​ 客户付费后能得到哪些服务项目?​ 常规服务项目:

一、Excel VBA 是个啥?

Excel VBA 从入门到出门一、Excel VBA 是个啥&#xff1f;二、Excel VBA 简单使用 &#x1f44b;Excel VBA 是个啥&#xff1f; ⚽️1. Excel 中的 VBA 是什么&#xff1f;⚽️2. 为什么 VBA 很重要&#xff1f;⚽️3. 是否有无代码方法可以在 Excel 中实现工作流程自动化&…

深挖 Python 元组 pt.1

哈喽大家好&#xff0c;我是咸鱼 好久不见甚是想念&#xff0c;2023 年最后一次法定节假日已经结束了&#xff0c;不知道各位小伙伴是不是跟咸鱼一样今天就开始“搬砖”了呢&#xff1f; 我们知道元组&#xff08;tuple&#xff09;是 Python 的内置数据类型&#xff0c;tupl…

Qt扫盲-QTreeView 理论总结

QTreeView 理论使用总结 一、概述二、快捷键绑定三、提高性能四、简单实例1. 设计与概念2. TreeItem类定义3. TreeItem类的实现4. TreeModel类定义5. TreeModel类实现6. 在模型中设置数据 一、概述 QTreeView实现了 model 中item的树形表示。这个类用于提供标准的层次列表&…

C#封装、继承和多态的用法详解

大家好&#xff0c;今天我们将来详细探讨一下C#中封装、继承和多态的用法。作为C#的三大面向对象的特性&#xff0c;这些概念对于程序员来说非常重要&#xff0c;因此我们将对每个特性进行详细的说明&#xff0c;并提供相应的示例代码。 目录 1. 封装&#xff08;Encapsulati…

【用unity实现100个游戏之14】Unity2d做一个建造与防御类rts游戏

前言 欢迎来到本次教程&#xff0c;我将为您讲解如何使用 Unity 引擎来开发一个建造与防御类 RTS&#xff08;即实时战略&#xff09;游戏。 在本教程中&#xff0c;我们将学习如何创建 2D 场景、设计 2D 精灵、制作 2D 动画、响应用户输入、管理游戏数据、以及其他有关游戏开…

机器学习7:pytorch的逻辑回归

一、说明 逻辑回归模型是处理分类问题的最常见机器学习模型之一。二项式逻辑回归只是逻辑回归模型的一种类型。它指的是两个变量的分类&#xff0c;其中概率用于确定二元结果&#xff0c;因此“二项式”中的“bi”。结果为真或假 — 0 或 1。 二项式逻辑回归的一个例子是预测人…

HarmonyOS学习路之方舟开发框架—学习ArkTS语言(状态管理 八)

其他状态管理概述 除了前面章节提到的组件状态管理和应用状态管理&#xff0c;ArkTS还提供了Watch和$$来为开发者提供更多功能&#xff1a; Watch用于监听状态变量的变化。$$运算符&#xff1a;给内置组件提供TS变量的引用&#xff0c;使得TS变量和内置组件的内部状态保持同步…

Python环境安装

1、下载python安装包 &#xff08;1&#xff09;可以从官网下载需要的版本&#xff1a;Python Releases for Windows | Python.org &#xff08;2&#xff09;或者从我的百度网盘下载3.11.1版本&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1qNH3KU0iHIi-tS9wYBVrtQ …

【论文阅读】通过3D和2D网络的交叉示教实现稀疏标注的3D医学图像分割(CVPR2023)

目录 前言方法标注3D-2D Cross Teaching伪标签选择Hard-Soft Confidence Threshold Consistent Prediction Fusion 结论 论文&#xff1a;3D Medical Image Segmentation with Sparse Annotation via Cross-Teaching between 3D and 2D Networks 代码&#xff1a;https://githu…

95、Spring Data Redis 之使用RedisTemplate 实现自定义查询 及 Spring Data Redis 的样本查询

Spring Data Redis 之使用RedisTemplate 实现自定义查询 Book实体类 原本的接口&#xff0c;再继承我们自定义的接口 自定义查询接口----CustomBookDao 实现类&#xff1a;CustomBookDaoImpl 1、自定义添加hash对象的方法 2、自定义查询价格高于某个点的Book对象 测试&a…

【JavaEE】线程安全的集合类

文章目录 前言多线程环境使用 ArrayList多线程环境使用队列多线程环境使用哈希表1. HashTable2. ConcurrentHashMap 前言 前面我们学习了很多的Java集合类&#xff0c;像什么ArrayList、Queue、HashTable、HashMap等等一些常用的集合类&#xff0c;之前使用这些都是在单线程中…

RabbitMQ之Fanout(扇形) Exchange解读

目录 基本介绍 适用场景 springboot代码演示 演示架构 工程概述 RabbitConfig配置类&#xff1a;创建队列及交换机并进行绑定 MessageService业务类&#xff1a;发送消息及接收消息 主启动类RabbitMq01Application&#xff1a;实现ApplicationRunner接口 基本介绍 Fa…