powerbi之常用DAX函数使用介绍——提供数据源练习

前述:

本次使用数据是包含产品表、客户表、区域表、销售订单表的一份销售订单数据,数据源链接如下:

链接:https://pan.baidu.com/s/1micl_09hFrgz2aUBERkeZg 
提取码:y17e

一、CALCULATE

1.语法结构

语法结构CALCULATE(表达式,过滤条件1,过滤条件2……)
参数设置第一个参数必须有,一般为聚合函数表达式;过滤条件参数可有多个或不设置
返回值返回

2.用法介绍

(1)不设置筛选条件

订单数量 = CALCULATE(SUM('销售订单'[订单数量]))

没有设置筛选条件,和只用聚合函数计算效果一样 

(2)设置筛选条件

例如我们要计算产品编号为1的订单数量:

产品1订单数量 = CALCULATE(SUM('销售订单'[订单数量]),'产品'[产品编号]=1)

 由于我们设置了筛选条件是产品编号1,所以只计算了产品1的订单数量

二、FILTER

1.语法结构

语法结构FILTER(、筛选条件)
返回值经过筛选的

2.用法介绍

FILTER 不可单独使用,而是用于需要表作为参数的其他函数中:

(1)搭配CALCULATE

例如我们想要计算大于平均销售单价产品的订单数量:

大于平均单价订单数量 = CALCULATE(SUM('销售订单'[订单数量]),FILTER('销售订单','销售订单'[销售单价]>AVERAGE('销售订单'[销售单价])))

(2)搭配聚合函数、迭代函数

例如想要根据销售单价与订单数量计算客户编号为1的产品销售收入:

客户1的销售收入 = SUMX(FILTER('销售订单',[客户编号]=1),[订单数量]*[销售单价])

三、ALL

1.语法结构

语法结构ALL(要删除筛选器的表或列)
返回值返回已删除筛选器的

2.用法介绍

(1)复制表

点击新建表——输入:

表名 = ALL(要复制的表)

(2)返回某一列为不重复表

点击新建表——输入:

表名 = ALL('表'[列])

(3)清除外部上下文筛选(重要)

新建以下两个度量值来观察对比:

订单数量 = SUM('销售订单'[订单数量])

总订单数量 = CALCULATE(SUM('销售订单'[订单数量]),ALL('产品'))

我们可以看到使用 ALL('产品')后度量值不会受到外部上下文的影响,每一行都会显示总订单数量,而不是像第一个度量值一样根据产品编号筛选,所以我们可以将其应用于类似于占比问题的计算中。

四、VALUES

1.语法结构

语法结构VALUES('表'[列])
返回值返回该列不重复表

也就是说当某个函数需要的参数是表,但我们能提供的是列,则可以使用values函数进行转换 

2.用法介绍

(1)返回某列不重复表(以事实表构建维度表)

例如当前模型中没有仓库编码这一单独的维度表,可以从销售订单表中提取出这个维度表:

新建表——输入:

仓库 = VALUES('销售订单'[仓库编码])

这个功能与前面的all函数第二个用法返回某一列为不重复表功能相同 

(2)保持外部上下文筛选

这个功能与all函数清除外部上下文筛选功能相反,以all函数用法介绍(3)中构建的数据为例:

总订单数量 = CALCULATE(SUM('销售订单'[订单数量]),ALL('产品'))

接下来使用values恢复产品编号的筛选:

恢复筛选订单数量 = CALCULATE(SUM('销售订单'[订单数量]),ALL('产品'),VALUES('产品'[产品编号]))

(3)查找文本型数据

例如我们需要查找城区名称为Thames的邮编: 

Thames邮编 = CALCULATE(VALUES('区域'[邮编]),'区域'[城区]="Thames")

有些朋友可能会疑惑values返回的是表,为什么在这里可以正常显示为一个值?

这是因为dax有一个重要特征:如果一个表只有一行一列,那么它也可以作为值来使用,但是如果没有被筛选为一行,是会报错的。

例如我们需要查找订单日期为2017年1月5日的产品编号: 

产品编号查找 = CALCULATE(VALUES('销售订单'[产品编号]),'销售订单'[订单日期]=DATE(2017,1,5))

五、HASONEVALUE

1.语法结构

语法结构HASONEVALUE('表'[列])
返回值True/False,判断该列是否被过滤为仅有一个值,如果是一个值返回True,多个或无返回False

2.用法介绍

一般作为IF函数第一个参数使用,来判断筛选后是否为一个值

补充:IF函数

IF(<logical_test>, <value_if_true>[, <value_if_false>])

术语定义
logical_test计算结果可以是 TRUE 或 FALSE 的任何值或表达式。
value_if_true逻辑测试为 TRUE 时返回的值。
value_if_false(可选)逻辑测试为 FALSE 时返回的值。 如果省略,则返回 BLANK。

在values用法(3)中我们最后提到如果结果没有被筛选为一行,是会报错的,报错度量值如下所示:

产品编号查找 = CALCULATE(VALUES('销售订单'[产品编号]),'销售订单'[订单日期]=DATE(2017,1,5))

为了防止错误情况出现,我们可以借助于IF与HASONEVALUE进行错误拦截:

hasonevalue产品编号查找 = IF(HASONEVALUE('产品'[产品编号]),CALCULATE(VALUES('产品'[产品编号]),'销售订单'[订单日期]=DATE(2017,1,5)),"无")

红色部分来判断产品编号列是否被过滤为一个值,是的话返回橙色部分结果,不是的话返回蓝色结果

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用Docker搭建WAF-开源Web防火墙VeryNginx

1、说明 VeryNginx 基于 lua_nginx_module(openrestry) 开发,实现了防火墙、访问统计和其他的一些功能。 集成在 Nginx 中运行,扩展了 Nginx 本身的功能,并提供了友好的 Web 交互界面。 文章目录 1、说明1.1、基本概述1.2、主要功能1.3、应用场景2、拉取镜像3、配置文件4、…

多线程——线程安全

目录 前言 一、观察线程不安全 二、线程安全概念 三、产生线程安全问题的原因 1.分析示例代码 2.线程随机调度 3.修改共享数据 4.原子性 5.可见性 6.指令重排序 四、解决示例代码的问题 结尾 前言 我们学习多线程编程的目的是为了能够实现“并发编程”&#xff0c;…

LSTM的变体

一、GRU 1、什么是GRU 门控循环单元&#xff08;GRU&#xff09;是一种循环神经网络&#xff08;RNN&#xff09;的变体&#xff0c;它通过引入门控机制来控制信息的流动&#xff0c;从而有效地解决了传统RNN中的梯度消失问题。GRU由Cho等人在2014年提出&#xff0c;它简化了…

C语言 | Leetcode C语言题解之第466题统计重复个数

题目&#xff1a; 题解&#xff1a; #include <stdlib.h> #include <stdio.h> #include <stdbool.h> #include <string.h> #include <math.h> #include <limits.h>#define MMAX(a, b) ((a) > (b)? (a) : (b)) #define MMIN(a,…

【项目】五子棋对战测试报告

目录 一、项目背景 二、项目功能 三、测试计划 1、功能测试&#xff1a; &#xff08;1&#xff09;测试用例&#xff1a; &#xff08;2&#xff09;实际执行测试的部分操作/截图 2、自动化测试 3、性能测试 一、项目背景 1、五子棋对战游戏 采用了前后端分离的方法来…

GO网络编程(七):海量用户通信系统5:分层架构

P323开始&#xff08;尚硅谷GO教程&#xff09;老韩又改目录结构了&#xff0c;没办法&#xff0c;和之前一样&#xff0c;先说下目录结构&#xff0c;再给代码&#xff0c;部分代码在之前讲过&#xff0c;还有知识的话由于本人近期很忙&#xff0c;所以这些就不多赘述了&#…

web自动化测试基础(从配置环境到自动化实现登录测试用例的执行,vscode如何导入自己的python包)

接下来的一段时间里我会和大家分享自动化测试相关的一些知识希望大家可以多多支持&#xff0c;一起进步。 一、环境的配置 前提安装好了python解释器并配好了环境&#xff0c;并安装好了VScode 下载的浏览器和浏览器驱动需要一样的版本号(只看大版本)。 1、安装浏览器 Chro…

vue-live2d看板娘集成方案设计使用教程

文章目录 前言v1.1.x版本&#xff1a;vue集成看板娘&#xff08;暂不使用&#xff0c;在v1.2.x已替换&#xff09;集成看板娘实现看板娘拖拽效果方案资源备份存储 当前最新调研&#xff1a;2024.10.2开源方案1&#xff1a;OhMyLive2D&#xff08;推荐&#xff09;开源方案2&…

SpringMVC2~~~

目录 数据格式化 基本数据类型可以和字符串自动转换 特殊数据类型和字符串间的转换 验证及国际化 自定义验证错误信息 细节 数据类型转换校验核心类DataBinder 工作机制 取消某个属性的绑定 中文乱码处理 处理json和HttpMessageConverter 处理Json-ResponseBody 处理…

go开发环境设置-安装与交叉编译(二)

1. 引言 Go语言&#xff0c;又称Golang&#xff0c;是Google开发的一门编程语言&#xff0c;以其高效、简洁和并发编程的优势受到广泛欢迎。作为一门静态类型、编译型语言&#xff0c;Go在构建网络服务器、微服务和命令行工具方面表现突出。 在开发过程中&#xff0c;开发者常…

吸毛效果好的宠物空气净化器分享,希喂、霍尼韦尔、米家实测

说起宠物空气净化器&#xff0c;几年前我可能会一脸鄙夷&#xff1a;为啥要花这种智商税冤枉钱&#xff1f; 直到之前养了一只猫&#xff0c;被家中乱飞的浮毛和滂臭的异味搞到头晕&#xff0c;于是作为i一个养宠的家电测评博主&#xff0c;索性对宠物空气净化器这玩意做了超级…

前端继承:原理、实现方式与应用场景

目录 一、定义 二、语法和实现方式 1.原型链继承 2.构造函数继承 3.组合继承 4.ES6类继承 三、使用方式 四、优点 五、缺点 六、适用场景 一、定义 前端继承是指在面向对象编程中&#xff0c;一个对象可以继承另一个对象的属性和方法。在前端领域&#xff0c;通常是指…

OpenCV高级图形用户界面(1)创建滑动条函数createTrackbar()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 创建一个滑动条并将其附加到指定的窗口。 该函数 createTrackbar 创建一个具有指定名称和范围的滑动条&#xff08;滑块或范围控制&#xff09;…

C语言之扫雷小游戏(完整代码版)

说起扫雷游戏&#xff0c;这应该是很多人童年的回忆吧&#xff0c;中小学电脑课最常玩的必有扫雷游戏&#xff0c;那么大家知道它是如何开发出来的吗&#xff0c;扫雷游戏背后的原理是什么呢&#xff1f;今天就让我们一探究竟&#xff01; 扫雷游戏介绍 如下图&#xff0c;简…

使用3080ti配置安装blip2

使用3080ti运行blip2的案例 本机环境&#xff08;大家主要看GPU&#xff0c;ubuntu版本和cuda版本即可&#xff09;&#xff1a;安装流程我最后安装的所有包的信息&#xff08;python 3.9 &#xff09;以供参考&#xff08;environment.yml&#xff09;&#xff1a; 本机环境&a…

【python实操】python小程序之计算对象个数、游戏更新分数

引言 python小程序之计算对象个数、游戏更新分数 文章目录 引言一、计算对象个数1.1 题目1.2 代码1.3 代码解释1.3.1 代码结构1.3.2 模块解释1.3.3 解释输出 二、游戏更新分数2.1 题目2.2 代码2.3 代码解释2.3.1 定义 Game 类2.3.2 创建 Game 实例并调用方法 三、思考3.1 计算对…

安卓13禁止锁屏 关闭锁屏 android13禁止锁屏 关闭锁屏

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.彩蛋1.前言 设置 =》安全 =》屏幕锁定 =》 无。 我们通过修改系统屏幕锁定配置,来达到设置屏幕不锁屏的配置。像网上好多文章都只写了在哪里改,改什么东西,但是实际上并未写明为什么要改那…

RabbitMQ 高级特性——死信队列

文章目录 前言死信队列什么是死信常见面试题死信队列的概念&#xff1a;死信的来源&#xff08;造成死信的原因有哪些&#xff09;死信队列的应用场景 前言 前面我们学习了为消息和队列设置 TTL 过期时间&#xff0c;这样可以保证消息的积压&#xff0c;那么对于这些过期了的消…

数据结构-4.6.KMP算法(旧版下)-朴素模式匹配算法的优化

一.绪论&#xff1a; 当主串字符和模式串字符不匹配时会执行jnext[j]来改变模式串的指针&#xff0c;但主串的指针不变。 二.求模式串的next数组&#xff1a; 1.例一&#xff1a; 如模式串abcabd&#xff0c;当第六个字符d匹配失败时&#xff0c;此时主串中前五个字符abcab都…

连锁店线下线上一体化收银系统源码

近年来线下线上一体化已经成为很多连锁门店追求的方向。其中&#xff0c;线下门店能够赋予品牌发展的价值依然不可小觑。在线下门店中&#xff0c;收银系统可以说是运营管理的关键工具&#xff0c;好的收银系统能够为品牌门店赋能。对于连锁品牌而言&#xff0c;对收银系统的要…