专栏首页公众号PowerBI大师上下文系列小讲堂(四)

上下文系列小讲堂(四)

东哥陪你学DAX

上下文系列小讲堂(四)

行上下文的嵌套

来看这样一个需求:如何显示当前订单是该客户第几次购买

很多人下意识地的在脑子里把客户ID和订单日期排序,再手工添加个递增填充列就完事——典型的Excel思路

如果数据时刻在增加,填充列该如何更新,派人守着点鼠标吗?显然不现实

在PowerBI里,可以利用“行上下文”的嵌套,来解决类似问题

首先把销售表简化去重

有两种方式来实现“行上下文”的嵌套,一种是earlier方式“Filter…Earlier…”,一种是变量方式“var…return…”

Filter…Earlier…

添加计算列“购买次数”(下图中Filter和Earlier函数,可以参见之前发的《东哥陪你学DAX》卡片)

如果仔细观察,你会发现,上述公式将会出现两个“行上下文

创建计算列一次,Filter迭代函数一次,内外嵌套两层“行上下文”,看到这里是不是又一头雾水?

我们依然按步骤来分解

  1. 创建计算列时,自动创建第一个“行上下文”,我们暂且称之为“外层行上下文”,它将对本表“销售简表”进行迭代
  2. 迭代函数Filter将创建第二个“行上下文”,我们称之为“内层行上下文”,它对函数第一参数(仍然是本表)进行迭代
  3. 这一条尤其重要:系统在处理“内层行上下文”时,“外层行上下文”将被忽略
  4. 如何在“内层行上下文”中能访问到“外层行上下文”?这就是“Earlier”函数的意义所在——Earlier可以突破这个限制,跳出嵌套,访问到外层上下文的当前值

如果你对上述步骤解还是感到困惑,那我就图解一次

通过图解,相信大家应该都能理清内外层逻辑关系了吧

上面引用Earlier函数,现在已基本不再使用,一般用变量(var…return…)语法来替代,但Earlier函数对新人理解嵌套行上下文还是很有帮助的

Var…Return…

同样还是上述示例,如何用变量(var…return…)的方式来实现?

前面我们说过,当系统在“内行上下文”中迭代时,外层的行上下文是隐藏的,暂不起作用

由上图便可知,利用变量把“外层行上下文”的迭代结果暂存,放到“内层行上下文”中使用,便达到了和Earlier函数一样的效果

本文分享自微信公众号 - PowerBI大师(PowerBIMaster),作者:东军

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-09-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 上下文系列小讲堂(二)

    在介绍两种上下文过程中,我会尽量列举它们在计算列和度量值中的不同表现,来增强大家的感性认识。(本系列所用示例,来自微软官方样本数据库AdventureWorks...

    公众号PowerBI大师
  • 上下文系列小讲堂(一)

    “度量值”和“计算列”的区别,令很多初学新人纠结不已。毕竟大部份人是从EXCEL里绕过来的,遇到问题,习惯拉起公式添加列,操作近乎条件反射,毕竟添加的计算列实实...

    公众号PowerBI大师
  • 上下文系列小讲堂(三)

    先来建个度量值“总销量 = SUM ( '销售表'[销量] )”,把它扔进“条形图”

    公众号PowerBI大师
  • 上下文系列小讲堂(回顾1)

    创建行上下文 1. 计算列:引用原有列,通过计算生成新列 2. 迭代函数 1) 聚合函数+X结尾:SumX,AverageX,CountX,Counta...

    公众号PowerBI大师
  • 调用链系列四:调用链上下文传递

    在之前的调用链系列文章中,我们已经对调用链进行了详细介绍,相信大家已经对调用链技术有了基本的了解。

    宜信技术学院
  • 开源技术 * IBM 微讲堂 | Kubeflow 系列(观看回放 | 下载讲义)

    本文转载自 开源技术 * IBM 微讲堂 | Kubeflow 系列(观看回放 | 下载讲义) 学习和掌握 Kubernetes 上的机器学习工具集...

    ccf19881030
  • Flask 扫盲系列-Flask 上下文

    上一次我们做了一个简单的在线股票走势网站,今天我们来继续完善下网站功能,并学习些新的 Flask 知识点。

    周萝卜
  • 不会画画的开发不是好敏捷教练

    CODING 携手优普丰为大家准备的 6 节“敏捷实战系列直播课程“已经进行了一半,本次系列课程我们请来了中国敏捷圈的“半壁江山”,大佬们都自带光环而且幽默,直...

    CODING
  • 小程序成地表最热门专业,这 3 家在线培训课堂哪家强?

    知晓君
  • TiKV 源码解析系列文章(四)Prometheus(下)

    与上篇一样,以下内部实现都基于本文发布时最新的 rust-prometheus 0.5 版本代码,目前我们正在开发 1.0 版本,API 设计上会进行一些简化,...

    PingCAP
  • 传统企业站开发 - 模块开发

    这几周我们接连讲解了如何实现一个页面的搭建,从最初的各种分析,标签选择,一直到可以实现页面的整体布局。这一系列的知识点讲解中,我们熟知了对一个网页PSD图的处理...

    HTML5学堂
  • 企点课堂 | 智能客服机器人上线啦,7月25日(下周四)开讲!

    ? 智能客服是什么? 能帮企业解决哪些问题? 如何通过客服机器人提高接待效率? …… 7月25日(下周四)下午四点 企点君带你揭开智能客服的神秘面纱 结合业务...

    腾讯企点
  • 《七天数据埋点之旅》第七天 埋点实战

    本节是实战环节,以极客时间app安卓端为例,综合运用前面介绍的知识点,来解构埋点设计。虽然极客时间还有服务号、小程序、PC端、IOS端等形式,但过程大同小异,不...

    木东居士
  • 怎样从优秀教师变成超级主播?本文全都告诉你

    ? 为了控制疫情,全国各大中小学都推迟了开学时间。教育部门希望各个学校根据自身情况,开展停课不停学的工作。可是,许多在讲台上经验丰富的老师,变成主播之后瞬间各...

    鹅老师
  • JS学习系列 05 - 执行上下文

    在我们前面理解了作用域之后,“作用域链”这个概念就产生了。那么作用域链是什么意思,它又是怎么形成的,跟哪些概念有关系,这就是我接下来几章想和大家探讨的内容:执行...

    leocoder
  • 腾讯陈书俊:科技,课堂创新的新动能

    ? 7月18日,校长会联合腾讯教育举办的“科技,创造教育新未来——第三届专业学校改进计划年会”在腾讯深圳总部召开。会上,腾讯教育副总裁、腾讯在线教育部总经理陈...

    鹅老师
  • 关于其他选择器以及选择器优先级详解

    上周我们讲解了页面浮动之后产生的问题,以及针对这个问题所采取的措施——清浮动,同时罗列了好几种清浮动的方法。那本周我们再来继续上次给大家分享的如何找标签的问题,...

    HTML5学堂
  • 鹿鼎记 · 韦小宝,丽春院、天地会、入皇宫等五个场景,搭配不同剧情讲解多线程和锁,真香!

    有时候很多看似复杂的知识,其实并没有多复杂,只不过你找到的那份资料把知识讲复杂了。为什么这么说呢??

    小傅哥
  • 传统企业站开发 - 模块开发(二)

    上周我们讲解了页面模块的制作,详情可见:传统企业站开发 - 模块开发,我们到底如何更好的实现模块的制作,小编这边继续给大家举一个例子来进行讲解。那今天我们为大家...

    HTML5学堂

扫码关注云+社区

领取腾讯云代金券