编写 DAX 公式时要掌握的核心概念是上下文。DAX 作为一门动态数据分析语言,与 Excel 函数、SQL 查询 和 Power Query 脚本有着根本不同的原因就在于上下文的概念。以上所述的所有其他语言的公式只会在数据发生变化时才会返回不同的结果(除了一些例外情况,例如使用参数时),但是单个 DAX 公式就可以同时提供多个不同的结果,具体取决于您使用它的位置和方式,也就是:上下文。
开始本章翻译时,是5月初。当时并不知道平平无奇的5月Power BI会带来一大波更新,尤其是大杀器“字段参数”(字段参数参考文章)。
由于公司财政能力有限,在分批次购买了几十个世纪互联Power BI的PRO账号后,恰逢遇到了疫情,而K12线下教培行业受冲击还比较严重,大老板暂时不再松口了,所以只能让后续想使用报表的同学们先使用试用版了,也是不得已的办法。
1 定义优化策略2 优化DAX表达式中的瓶颈2.1 优化筛选条件2.1.1 优化前2.1.2 优化后2.1.3 小结
本章介绍的是如何在PowerBI模型中实现各类安全性保障。除了我们所熟知的行级别安全性RLS,本文更是介绍了对象级别安全性、表级别安全性、列级别安全性、值级别安全性等。有待大家根据自己的实际业务场景,实现更加符合要求的安全性要求。
SUMMARIZE执行两个操作:按列分组和添加值列。使用SUMMARIZE对表进行分组是一个安全的操作,而使用SUMMARIZE添加新的列可能会导致难以调试的意外结果。
2019年3月1日,在SqlBits大会上,微软宣布DAX引入一项重大更新:Calculation Group(暂且不做翻译)。这项更新将对PowerBI及SSAS均构成重要影响。为此,微软SSAS团队官方,SQLBI.com以及Chris Webb分别在各自博客记录这一内容。(后两者为SSAS领域国际顶级专家博客)
Power BI中DAX函数非常多,功能非常强大,下面结合一些实际场景来讲解DAX一些常用的函数,这些场景包含求和、计数、相除、排序、累计、环比、同比,为了更方便后续的可视化展示数据,我们新创建可视化展示的页面,创建一个新表存储后续展示的度量值,具体操作如下:
👆点击“博文视点Broadview”,获取更多书讯 本文将介绍DAX中的基础表函数。 表函数是DAX中的一种常规函数,它返回的结果不是一个标量值,而是一个表。当需要编写DAX查询和迭代表的高级计算时,表函数非常有用。本文会介绍相关的计算示例。 本文的目标是介绍表函数的概念,而并非提供所有DAX表函数的详细说明。 《DAX权威指南》一书的第12章和第13章中介绍了更多的表函数。本文将解释DAX中最常见和重要的表函数的作用,以及如何在常见的场景中,包括标量表达式中使用它们。 01 表函数介绍 到目前为止,你
文章背景: 最近在学习DAX权威指南的第15章,高级关系。在某些情况下,我们很难在两个实体之间创建物理关系。可喜的是,DAX表达式有多种方式模拟这种关系。
Calculate是目前DAX语言中最重要、最有用同时也是最复杂的函数,值得单独成章进行介绍。涉及Calculate函数的内容很多,这里介绍的是行上下文转换。
这是一个老生常谈的问题,本文将给你终极解决方案,并带您重新理解一种模式,从入门级到专业级,均有您需要的营养。
1、为什么先写好度量[最大日期],然后在Calculate的筛选条件里调用,却不能得到正确的结果呢?filter是行上下文应该不具备筛选功能?
导语:USERELATIONSHIP函数本身很简单,但经常需要和CALCULATE函数结合使用,这时,问题就开始变得很复杂,而反过来说,通过理解USERELATIONSHIP参与计算的过程,也能加深对CALCULATE函数的理解。
文章背景: 最近在学习DAX权威指南第10章,使用筛选上下文。其中提到,FILTERS是一个类似于VALUES的函数,但二者有一个重要的区别——VALUES返回筛选上下文中的可见值;FILTERS返回被当前上下文筛选的值。
创建行上下文 1. 计算列:引用原有列,通过计算生成新列 2. 迭代函数 1) 聚合函数+X结尾:SumX,AverageX,CountX,CountaX,MaxX,MinX 2) 其他迭代函数:Filter,RankX,SelectColumns,AddColumns,ConcatenateX,FirstNONBlank / LastNONBlank,FirstNONBlankValue / LastNONBlankValue,ProductX
TOTAL函数系列共包含三个函数:TOTALMTD函数,TOTALQTD函数,TOTALYTD函数。
OPENINGBALANCE系列函数一共包含三个函数:OPENINGBALANCEMONTH函数,OPENINGBALANCEQUARTER函数,OPENINGBALANCEYEAR函数。
导语:备,拷,转,调,叠,算,我一遍又一遍地重复这6个字,只为让大家看到一个有calculate函数的公式,尤其是当其结果和自己想的不一样时,可以条件反射式地把这6个步骤应用进去——这是我这一年多来对DAX最重要的总结,没有之一!
白茶认为,这个东西可以不用,但是该了解需要了解。感谢@群里面各位大佬的指点,RANKX函数的最后一点也彻底明白了。
前面,我在文章《DAX的核心,其实只有4个字!》里提到,DAX核心思想,就是“筛选、计算”四个字,当然,这个总结非常抽象,接下来,我会用一个又一个的例子来给大家具体讲,大家将慢慢体会到,几乎所有的度量都紧紧围绕这个思想而展开。
张旭本职工作是台湾高数课外补习班老师,因为把自己的教学视频传到了全球最大的成年人网站Pxxxhub,而意外收获了众多国内外高数学习者的关注。看似很荒唐的事情,背后却隐藏着这位数学老师强大的逻辑思维。刚开始录制网络视频是为了招生,但他把视频发在YouTube和Facebook上没有带来多少点击量,因为教培界内卷太严重,这类网站关于高数的教学视频太多。
ALLSELECTED函数是唯一一个使用影子筛选上下文的DAX函数。我们首先研究ALLSELECTED的行为,然后介绍影子筛选上下文。
数据透视表是Excel历史上最伟大的发明,然其本质上是个很简单的原理,就是一个漏斗,即筛选器。按照不同的角度筛选输出分析结果。
之前呢,白茶曾经分享过关于RANKX排名问题,但是在实际需求中,有时候我既想展示排名,但是同时我又想看看销售前几,该如何进行呢?这个问题就是标题——TOPN的问题。
在文章《死磕Calculate之1:改变筛选上下文之忽略(”删“)》里,我说“把筛选上下文给去掉(删),用All函数”,如下所示:
性能优化,在 DAX 中是很重要的问题,对 DAX 的性能优化大致可以归结为针对 SE(存储引擎) 或 FE(公式引擎) 的性能优化。
数据模型是进行报告分析的基础。为此提供了结构和有序的信息。为确保提供更好的性能、可靠性和准确性,将数据加载到正确设计的模型中是数据分析很重要的一项工作。
本月除了常规的更新以外,引入了一个非常牛的大杀器,叫做VALQ,专门用来做计划,预测,调整等,在很多领域都有广泛的运用。
文章背景:在工作中,有时需要提取同一日期的最后一条记录。比如每个客户的最后一次下单记录,或者每个产品最后一次卖出记录等。
Power BI 模型的真正强大之处在于通过使用 DAX 语言进行计算。虽然许多 Power BI 用户专注于模型并试着完全避开使用 DAX,但是除了最简单的基础聚合运算以外,其他所有的计算都需要通过 DAX 来实现。而且,你迟早会在 Power BI 中遇到更复杂的计算需求。根据我们的经验,典型的情况会是:你精心制作的一个 Power BI 报告初稿,会引出有关这些数据的越来越多、越来越复杂的问题。
交叉购买分析,有时也叫购物车分析,一般用于判断同时购买某几种产品组合的用户偏好,以便向用户推荐产品。在PowerBI中当然也可以完成类似的分析。
👆点击“博文视点Broadview”,获取更多书讯 传统的Excel单表虽然可以有100万行数据的承载量,但是在实际分析时,20万行的数据就已经让传统的Excel非常吃力了。 但是,如果使用Excel中的Power Query和Power Pivot商务智能组件,即使是上百万行数据,也可以在短时间内快速完成处理和分析。 Power Query在Excel和Power BI Desktop中都是内置组件,并且管理界面和知识体系保持了高度一致。 其实,Power BI中的Power Query和Power P
DAX里的CALCULATE函数,无疑是最强大、最重要、最灵活而又最难懂的函数,没有之一。
设计优良的分析模型是 DAX 高效运行的前提。在本章中,我们将讨论许多与建模有关的主题,这些主题对于理解性能强劲的模型设计非常重要。
兄弟们慢点,4天发布6项更新,你们不考虑下大家有时间学不,还有竞争对手会蒙圈的~ 产品经理无奈回复:这不是老大你安排的嘛。
INTERSECT是DAX的重要函数之一,使用方式为intersect(表1,表2),它的基本功能是获得两个表的交集,如下图所示:
在学习 Power BI 的 DAX 过程中,不免会遇到一些问题和你想的不一致。例如以下问题来自伙伴在实际业务中涉及到的公式,我们来拆解并帮助大家梳理对于 DAX 的理解。
到了年底,PowerBI积累了一年的功能来了波大的,本次更新的功能涉及几处重大改进。更新功能列表如下:
文章背景:最近在学习DAX权威指南的第16章,DAX中的高级计算。其中提到了一种相当常见的计算模式:对事件序列进行编号,以便查找第一个、最后一个和上一个事件。
一个使用了CALCULATE函数的公式,到底是怎么样计算得到它的结果的?如果没有真正搞懂CALCULATE函数计值流(计算过程)的话,即使这个公式很简单,也可能会无法理解!
ALLCROSSFILTERED函数,属于“筛选”类函数,而且,这个函数只能用作CALCUALTE函数的调节器,其本身的结果不能返回任何表或数值。
本文来自社区伙伴对《DAX 权威指南(第二版)》的学习笔记,有问题可以留言或联系BI佐罗修改,感谢你的支持。
文章背景: DAX权威指南第16章讲的是DAX中的高级计算。最后一个例子提到,为了准确地计算出年同比(YOY),需要忽略上一年中发生在设定日期之后的任何销售数据。
而要实现双图表的切换,首先要考虑的是,当切换某一组图表时,另一组图表必须是不变的,这就需要好好思考一下了。
每月一次的 Power BI 更新如期而至,本月更新个人认为是很有意义的。本文将详细描述这些内容。
文章背景: 在表缺少主键无法直接创建关系,或者需要借助复杂的计算才能创建主键的情况下,可以利用计算列来设置关系。在基于计算列创建关系时,循环依赖经常发生。下面先介绍一个示例,然后讲解循环依赖产生的原因,以及如何避免空行依赖。
之前的一期,白茶曾经分享过一次关于迭代循环的文章《迭代循环丨SUMX函数》,本期咱来深入聊聊这个问题。
分别表示月末最后一天/季度末最后一天/年度末最后一天。还记得白茶之前曾经写过关于半累加的文章么?如果对于CALCULATE函数使用不习惯,那么可以尝试使用本期这三个函数。
REMOVEFILTERS函数属于“筛选”类函数,其本身不属于表函数,也不属于值函数,仅作为CALCULATE函数的调节器使用。
领取专属 10元无门槛券
手把手带您无忧上云