Power BI(二十一)power pivot之筛选上下文和行上下文
Power BI(二十一)power pivot之筛选上下文和行上下文
其实上下文概念并不深奥,但是对于习惯使用Excel计算函数的亲们来说在学习这块知识时感觉会比较别扭,这主要是因为在Excel中,某一段计算内容的确定是通过Excel表格中的坐标来确定的,非常直观,例如SUM(A1:A3),能让人一眼就明白要计算的内容是A1单元格到A3单元格之间所有数字的总和。而在DAX中,为了支持对大数据进行多样化的运算,它没有使用Excel中通过固定坐标定义函数运算范围的方式,转而通过上下文概念来定义函数所在的环境变量,即其运算范围,实现了函数对数据的处理可以根据上下文的不同而输出不同的运算结果。因此,只有充分理解了上下文含义才能更好的使用DAX来分析数据。
DAX中有两种类型的上下文分:行上下文(Row Context)和筛选上下文(Filter Context)。
行上下文
行上下文可以理解为当前行内容。行上下文的应用范围不只局限于当前一张表。如果两张表之间建立了关联关系,则通过该关联关系就形成一个跨表的行上下文。
筛选上下文
筛选上下文是指将原始数据按照一定规则进行筛选,然后将提取出来的结果再作为环境变量带入到函数中使用。通过设定筛选上下文,可以灵活的改变函数的运算范围,实现数据分类分析处理的目的。
需要记住的是,DAX的行上下文和筛选上下文共同作用于函数运算当中并对其结果产生影响。在分析行上下文对函数结果的影响时要以当前行中的数据为研究基准,而分析筛选上下文对函数结果的影响时则要从筛选出的子表单入手进行。
当创建计算列时,DAX会自动为其定义行上下文关系,即计算列中的每个值都受到其所在行数据的影响。而当使用度量值创建报表时,其运算都是基于表单中其他条件生成的筛选上下文而进行的。
---------------------
以上介绍内容摘自(具体理论可以去看这一篇博客),我们主要实战
https://blog.csdn.net/jessica_seiya/article/details/90904341
常用函数FILTER、ALL、CALCULATE三者与上下文关系
用一个例子,公路自行车占各省的销售金额以及占各省销售的占比
FILTER:带入一个新的行上下文,不会影响原有的上下文,可以被切片
ALL:完全用自身所有数据,其他行/筛选上下文不起作用
CALCULATE:针对公式里面列会强行替换原有上下文,其他不受影响
下面验证一下上面三个函数对上下文影响:
数据集(销售记录)
度量值如下:
销售额:=SUM([金额])
公路自行车销售额:=SUMX(FILTER('销售记录','销售记录'[产品名称]="公路自行车"),'销售记录'[金额])
金额占比:=DIVIDE([公路自行车销售额],[销售额])
用ALL计算的销售额:=SUMX(ALL('销售记录'),'销售记录'[金额])
CAL计算公路自行车销售额:=CALCULATE([销售额],'销售记录'[产品名称]="公路自行车")
CAL/ALL计算公路自行车销售额:=CALCULATE([用ALL计算的销售额],'销售记录'[产品名称]="公路自行车")
生成数据透视表
添加切片器(画红色的发生变化了)
CALCULATE函数计算与FILTER/SUMX没什么差别,但是在筛选为产品名称就有差别了
CAL计算公路自行车销售额:=CALCULATE([销售额],'销售记录'[产品名称]="公路自行车")
CALCULATE里面的行上下文替换了原有的筛选上下文,所以每一行都会有记录,而FILTER带入一个新的行上下文,不会影响原有的上下文,可以被切片
使用Calculate进行上下文转换
我们想统计产品分类----销售额占百分比
传统做法
生成数据透视表--值显示方式---
使用DAX函数怎么生成呢?
度量值
销售额:=SUM([金额])
总的销售额ALL:=SUMX(ALL('销售记录'),'销售记录'[金额])
ALL百分比:=DIVIDE([销售额],[总的销售额ALL])
但是我们按照年份筛选就会有存在问题
所以我们可以改进一下
总的销售额CAL:=CALCULATE([销售额],ALL('产品分类'))
CAL百分比:=DIVIDE([销售额],[总的销售额CAL])
Power BI(二十一)power pivot之筛选上下文和行上下文相关推荐
- Power BI(十一)Power Pivot常用DAX函数
Power BI(十一)Power Pivot常用DAX函数 主要提及以下的函数,用法其实和平常的Excel公式差不多 数据的提取和合并函数 数据的格式转换函数 聚合函数 逻辑函数 信息函数 数学函数 ...
- power bi报表html,Power BI -- 第二篇:Power BI数据可视化之基于Web数据的报表制作(经典级示例)...
http://www.cnblogs.com/muchen/p/5391101.html 阅读目录 •前言 •Power BI的三大工作区 •导入数据 •数据塑形 - 工作区介绍 •数据塑形 - 工作 ...
- 【Power BI】通过Power BI DAX获取每月活动用户数量
前言 在做Power BI报表统计时候,经常会遇到查看每月活动用户数量的需求 实现方式 1.新建度量值 月活动浏览者统计 = CALCULATE (DISTINCTCOUNT ('QueryAllAc ...
- power bi报表html,Power BI 服务中的分页报表
Power BI 服务中的分页报表 10/11/2020 本文内容 适用对象: 面向商务用户的 Power BI 服务 面向设计者和开发人员的 Power BI 服务 Power BI Desktop ...
- 大数据分析工具Power BI(十一):制作对比分析图表
文章目录 制作对比分析图表 一.表 二.矩阵 三.条形图 四.柱状图
- 在Power BI度量值中用SELECTEDVALUE代替EARLIER
在计算列当中,经常使用EARLIER函数来获取当前外部特定行上下文,来跟内部筛选结果进行比较.例如,对于下图,如果要以Account列值为依据,计算Amount的累计量.则可以创建一个计算列Cum_E ...
- 在 Power BI 中筛选每类产品的前三名
本文翻译自Marco Russo的文章--<Filteringthe Top 3 products for each category in Power BI>本文介绍了在Power BI ...
- Power BI与Power Query、Power Pivot 是什么关系?
搞不清楚Power BI与Power Query.Power Pivot是什么关系?看这篇文章就够了. 刚开始学习PowerBI的时候,总是能碰到Power Query和Power Pivot这两个词 ...
- 数据分析:大数据时代的必备技能之Power BI
文章目录 商业智能分析概述与流程 一.BI概述与流程 前言 什么是 BI ?什么是可视化? BI可视化步骤 二.Microsoft Power BI介绍与安装 1. 介绍 2. Power BI特点 ...
最新文章
- 数组元素倒置-Java
- WinCE6.0的极速启动
- hdu 1598 find the most comfortable road (并查集+枚举)
- 如何用html5编写彩色同心圆,HTML5 canvas 同心圆动画
- 【学习笔记】数据链路层——轮询访问介质控制(轮询协议、令牌传递协议)
- 蓝桥杯 ADV-193算法提高 盾神与条状项链
- Matlab-中寻找峰值函数,波峰波谷
- 十大算法(动图讲解)❤️超详细!
- Pytorch实现ResNet50网络结构,包含ResNet18,ResNet34,ResNet50,ResNet101,ResNet152
- 在边缘试探的滴滴顺风车 凭什么在2019年再上线?
- 《资本之王》书中的精髓:黑石公司是如何成长为全球最顶尖的私募股权投资机构的?
- 服务器硬盘热插拔检测不到,用过这么多年才知道, 原来有的设备是真的不能热插拔的!...
- Perl-LWP文档
- S32K144库函数
- java输出GPA_请完成下列Java程序:实现换算GPA,对于学生学习的每一门课程,都输入两个..._考试资料网...
- LocalDateTime计算两个时间的间隔
- 我的世界服务器神秘修改节点,我的世界如何用NBT指令方块修改神秘时代4
- 深入浅出计算机组成原理12-理解电路:从电报机到门电路,我们如何做到“千里传信”?
- 年会弹幕文字_弹幕软件_互动游戏/活动管理平台/年会必备工具
- 批量创建带密码的7z和rar压缩包工具
热门文章
- 程序员在电梯内没跟总监打招呼,被领导批评并要求写检讨书
- ProGuard混淆Java项目的核心代码
- flannel原理之vxlan模式
- visual studio code python插件下载_VisualStudioCode插件下载
- Vue2升级到Vue3
- 【书评】浪潮之巅(第四版)(上下册)
- [精华分享][独立游戏][Steam][发行商]独立游戏发行商发行平台
- FMD辉芒微MS80F0801单片机小结1
- 算能杯|全国大学生集成电路创新创业大赛开启报名!
- WPS JS通过GET/POST请求网络数据接口写入到Excel表格