Power BI之常用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)),"无")
红色部分来判断产品编号列是否被过滤为一个值,是的话返回橙色部分结果,不是的话返回蓝色结果
相关文章:

Power BI之常用DAX函数使用介绍——提供数据源练习
前述: 本次使用数据是包含产品表、客户表、区域表、销售订单表的一份销售订单数据,数据源链接如下: 链接:https://pan.baidu.com/s/1micl_09hFrgz2aUBERkeZg 提取码:y17e 一、CALCULATE 1.语法结构 语法结构CALCUL…...

SQL-触发器(trigger)的详解以及代码演示
一、触发器的概念 触发器是一种特殊的存储过程,但是触发器不存在输入和输出参数,所以不能被显式的去调用,而是与特定的表相关联,当表中的数据发生变化时,触发器被激活并执行其定义的SQL代码。触发器可以是行级触发器&…...

【devops】x-ui 实现一键安装 x-ray 打造高速国际冲浪 | xray管理平台
一、部署X-UI篇 1、Github 地址&说明 github地址如下: https://github.com/FranzKafkaYu/x-ui?tabreadme-ov-file 2、一键部署 2.1、更新并安装curl #Ubuntu、Deibian系统 apt update && apt upgrade -y apt install curl -y #CentOS7 系统 yum…...

Linux系统编程——进程标识、进程创建
一、进程标识(pid) 每个进程都有一个非负整数形式的唯一编号,即 PID。PID 在任何时刻都是唯一的,但是可以重用,当进程终止并被回收以后,其 PID 就可以为其它进程所用。进程的 PID 由系统内核根据延迟重用算…...

【超级福利】openMind开源实习来袭,奖励高达万元,解锁你的AI实践新篇章!
亲爱的小伙伴们,是不是梦想着能在真实的项目中大展拳脚,却又苦于找不到合适的舞台?别担心,OpenI启智社区携手openMind Library工具链,为你量身打造了一场开源实习盛宴,保证让你的学习不再无聊,技…...

React JSX 使用条件语句渲染UI的两种写法
只针对函数组件 1. 第一种写法: function App({ id }) {return id1? <h1>hello</h1> : <h1>world</h1>; } 或者: function App({ id }) {return (<h1>{id1 && "hello" || id2 && "wo…...

谷歌-BERT-第四步:模型部署
1 需求 需求1:基于gradio实现大模型的WEB UI交互界面 2 接口 3 示例 import gradio as gr from transformers import *classifier pipeline("text-classification", model"./model", tokenizer"./model")gr.Interface.from_pipel…...

猫咪化身蒲公英,浮毛满屋乱飞,有哪些宠物空气净化器值得购买?
不掉毛的猫咪究竟是谁在养? 当初去朋友家玩,被猫咪捕获芳心,没多久自己也领养了一只。没想到啊,这就意味着要和猫毛纠缠一辈子了。平时白天上班不在家,它就在一边跑动一边掉毛,回到家我都能推断它的行动路…...

端到端的开源OCR模型:GOT-OCR-2.0,支持场景文本、文档、乐谱、图表、数学公式等内容识别!
今天给大家分享一个端到端的开源 OCR 模型,号称 OCR 2.0! 支持场景文本、文档、乐谱、图表、数学公式等内容识别,拿到了 BLEU 0.972 高分。 从给出的演示图来看,一些非常复杂的数学公式都能正确的识别,颇为强大。模型…...

自注意力机制self-attention中QKV矩阵的含义
自注意力机制(Self-Attention)是Transformer模型的核心组件,其中Q、K、V矩阵分别代表查询(Query)、键(Key)、值(Value)。它们的作用和含义可以通过信息匹配过程来理解。在…...

【前端】Bootstrap:栅格系统 (Grid System)
Bootstrap的栅格系统是该框架的核心部分之一,能够让开发者轻松创建响应式网页布局,适配各种屏幕尺寸和设备。栅格系统通过将页面划分为12列的布局结构,开发者可以根据内容的重要性和设计需求灵活控制元素的宽度和排列。 在这篇文章中&#x…...

一文读懂,SSL证书怎么验签安装使用?
SSL证书目前已经有越来越多的企业网站开始使用,安装SSL证书后,原有的http协议将会变成安全性更好的https加密协议,这对保护用户的信息安全,保障企业及用户的利益起着重要作用。 一张SSL证书的获取,需要经历不少环节&a…...

Mysql(八) --- 视图
文章目录 前言1.什么是视图?2.创建视图3. 使用视图4. 修改数据4.1.注意事项 5. 删除视图6.视图的优点 前言 前面我们学习了索引,这次我们来学习视图 1.什么是视图? 视图是一个虚拟的表,它是基于一个或多个基本表或其他视图的查询…...

SQL注入原理、类型、危害与防御
SQL注入的原理概念 SQL注入是一种常见的网络攻击技术,攻击者通过在Web应用程序的输入字段中注入恶意构造的SQL代码,以欺骗后端数据库执行非预期的SQL命令。这种攻击可以导致数据泄露、权限提升、数据篡改甚至系统瘫痪。SQL注入可以分为多种类型…...

第2讲 数据库系统的结构抽象与演变
基本内容 数据库系统的标准结构?数据模型?数据库系统的演变与发展?重难点 一组概念的区分:三级模式两层映像,物理独立性和逻辑独立性一组概念的区分:数据→模式→数据模型几种数据模型的差异:网状/层次模型→关系模型→数据模型数据库系统的标准结构 (1)数据库系统的分…...

Git创建开发分支命名规则
git checkout -b feature/branchname 和 git checkout -b branchname 这两条命令的主要区别在于新分支的命名。 主要区别 分支命名: git checkout -b feature/branchname:新分支的名字是 feature/branchname,表示该分支属于一个特性开发&…...

【纯前端excel导出】vue2纯前端导出excel,使用xlsx插件,修改样式、合并单元格
一、使用第三方插件 1、安装 npm install xlsx-js-style 2、引入 import xlsx from xlsx-js-style xlsx插件是基础的导出,不可以修改样式,直接xlsx-style插件式修改样式的,所以这里直接用二者合体插件即可 二、页面使用 1、数据源 [{"…...

如何在极速浏览器中实现谷歌浏览器的扩展功能
在当今数字化时代,浏览器扩展功能极大地增强了我们的在线体验。尤其是谷歌浏览器,以其丰富的扩展生态而闻名。但是,如果你想在极速浏览器中使用这些谷歌浏览器的扩展功能,该怎么办呢?本文将为你详细解析如何实现这一目…...

Web安全 - 跨站点请求伪造CSRF(Cross Site Request Forgery)
文章目录 OWASP 2023 TOP 10CSRF 导图CSRF的基本概念CSRF的工作原理常见CSRF攻击模式CSRF防御策略补充建议应用场景实战防御策略选择1. CSRF Token(首选)2. SameSite Cookie属性3. 验证Referer和Origin4. 多因素认证 实现方案CSRF Token实现SameSite Coo…...

C++游戏开发完整学习路径
C游戏开发完整学习路径 引言 随着游戏行业的迅速发展,C作为主要的游戏开发语言,因其高效性和灵活性,依然受到广泛欢迎。C不仅在大型游戏开发中被广泛使用,而且在游戏引擎的构建、性能优化和复杂算法的实现中也扮演着关键角色。本…...

vue3之 shallowRef、markRaw
shallowRef 用于创建一个浅层响应式引用,只对顶层属性进行响应式处理。 markRaw 用于标记一个对象,使其完全跳过 Vue 的响应式系统。 这两者都可以用于优化性能,避免不必要的响应式开销,特别是在处理大型对象或第三方库对象时。 …...

影刀RPA实战:操作Mysql数据库
1.摘要 影刀RPA(Robotic Process Automation)是一种软件自动化工具,它可以模拟人类用户执行各种重复性任务,其中包括对数据库的操作。 我们可以使用软件自动化指令,通过获取数据库窗口对象来操作数据库,也…...

【c++】c++11多线程开发
2 C多线程 本文是参考爱编程的大丙c多线程部分内容,按照自己的理解对其进行整理的一篇学习笔记,具体一些APi的详细说明请参考大丙老师教程。 代码性能的问题主要包括两部分的内容,一个是前面提到资源的获取和释放,另外一个就是多…...

PW37R_V1 产品规格书
概述 PW37R_V1是一款采用3.7英寸黑白红三色电子纸显示的电子标签,采用一种先进的无线自动更新系统,实现无线传输。 通过http,mqtt协议更新数据和控制该款电子标签的显示等操作,显示内容可自定义。内置电池供电,可Typ…...

android11 usb摄像头添加多分辨率支持
部分借鉴于:https://blog.csdn.net/weixin_45639314/article/details/142210634 目录 一、需求介绍 二、UVC介绍 三、解析 四、补丁修改 1、预览的限制主要存在于hal层和framework层 2、添加所需要的分辨率: 3、hal层修改 4、frameworks 5、备…...

【开源免费】基于SpringBoot+Vue.JS房屋租赁系统(JAVA毕业设计)
本文项目编号 T 020 ,文末自助获取源码 \color{red}{T020,文末自助获取源码} T020,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…...

JavaScript全面指南(二)
🌈个人主页:前端青山 🔥系列专栏:Javascript篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来JavaScript篇专栏内容:JavaScript全面指南(二) 目录 21、说明如何使用JavaScript提交表单? 2…...

Nginx:Linux配置Nginx
目录 一、环境安装1.1 GCC编译器1.2 PCRE1.3 Zlib1.4 OpenSSL1.5 快速下载 二、Nginx源码简单安装2.1 下载安装包2.2 解压2.3 进入资源文件中2.4 编译、安装 三、Yum安装四、Nginx源码复杂安装4.1 参数介绍4.2 参数配置 五、卸载Nginx5.1 关闭Nginx进程5.2 将安装的Nginx删除5.…...

WebRTC音频 04 - 关键类
WebRTC音频01 - 设备管理 WebRTC音频 02 - Windows平台设备管理 WebRTC音频 03 - 实时通信框架 WebRTC音频 04 - 关键类(本文) 一、前言: 在WebRTC音频代码阅读过程中,我们发现有很多关键的类比较抽象,搞不清楚会导致代码阅读一脸懵逼。比如…...

Elasticsearch:Redact(编辑) processor
Redact 处理器使用 Grok 规则引擎来隐藏输入文档中与给定 Grok 模式匹配的文本。该处理器可用于隐藏个人身份信息 (Personal Identifying Information - PII),方法是将其配置为检测已知模式,例如电子邮件或 IP 地址。与 Grok 模式匹配的文本将被替换为可…...