汉语博大精深,同一个词在不同的语境下表达的意思都可能不同。 ? 而这不同的语境就好比DAX的“上下文”。使用不同的切片器、筛选器、数据透视表的行和列,都会创造不同的“语境”(筛选上下文)。...计算列不是什么新知识,就好像在Excel中使用Vlookup添加一列一样,这一列是基于现有的表基础上做运算,它是“静态”的,运算结果不会因为切片器或透视筛选而变化,当你建立好后,它就会保存在文件中,增加你的内存...下图这个图是我经常用来脑补DAX的工作原理,度量值和计算列都是先执行筛选再来计算,而所谓的“DAX用作查询语言”其实就是主要应用了筛选功能,所以某些观点“DAX查询将取代数据透视表”是没有道理的,一个东西你只用了一半的功能...为什么输出的结果很奇怪?为什么公式报错? ? 你可能遇到很多这样的情况,最后找到的答案都是一个。第一时间到编辑查询器和建模界面中,去检查数据类型、格式、分类的设置是否正确。...如果是仅仅完成多个文件的汇总整理,没有后续的分析和可视化工作,你完全可以使用Excel的编辑查询器。 ?
如:角色A可以看北京数据,角色B可以看上海数据,则具有角色A和角色B的成员可以看北京和上海的数据。 Model(数据模型),由多个形成关系的表组成,权限的控制将按关系的箭头方向进行传递。...首先,看下PowerBI文件的查询结构: 可以看出我们单独设置了权限控制部分的配置表和度量值,来看看权限控制表的实现: 这里对用户的配置,进行了逆透视以及规范化处理,形成了便于在PowerBI中便于使用...如果要说这里算有难度的地方,就是如何把一个透视表,也单元格内含有多项内容的表格,自动转换为原始的规范化表,这由PowerBI的查询编辑完成。...非常希望微软能在DAX表达式本身加入更多的动态特性。原理上,只需要改进编译器即可,并不是很难的问题,但以M语言加入智能提示的速度来看,不敢奢求了。...最后的补充:双向安全筛选器 在学习PowerBI建立关系时,很多人好奇一个地方: 这个在两个方向上应用安全筛选器是什么意思,在这里的场景下: 会出现两种理解: 由于客户表并没有受到权限控制,应该显示所有客户
最后,打开多个pbix文件,需要多个模型间转换时,在新的版本中,再加上了窗体标题可识别当前打开的PBI催化剂属于哪个模型的,方便查看。 ?...向PowerBI数据模型发出DAX查询,即可类似于写SQL语句向关系型数据库查数据一般,将数据模型里的明细数据查询出来。...故通过开放DAX查询接口的方式,让用户可以在PBI催化剂上填写DAX查询语句,向数据模型发出查询后,最终数据导出至Excel表格。...本功能除了核心的DAX查询,还将对查询的周边功能进行开发,自动获取当前PowerBIDeskTop最近的DAX查询,清洗DAX查询(将自动获取到的DAX查询多余的查询条件剔除)、格式化DAX查询,保存DAX...报表层元数据批量管理 此功能具有革命性意义,因当前PowerBI外部工具功能,仅限于开放PowerBI模型层访问、修改权限,没有对报表层开放接口。
加入 PowerBI自己学 知识星球 可以:下载源文件,边学边练;遇到问题,提问交流,有问必答。...使用DAX在数据表中新建计算列,经常从另一个表中查找返回符合条件的值,类似于Excel的VLOOKUP,又高于Excel的VLOOKUP。...举例以销量表和价格表为例,为销量表从价格表中查找返回产品的价格。基于查找表(价格表)的3种形式,对应有3种方案。...方案3 两表之间不存在关系,条件判断允许复杂逻辑,用CALCULATE+VALUES+FILTER,从一个无关系的表中筛选出唯一值。...替换VALUES4 如果表之间有关系,可以使用ALL或REMOVEFILTERS清除关系,再进行筛选取值价格表中产品出现多次,需要用指定的日期区间锁定唯一值。
最后,打开多个pbix文件,需要多个模型间转换时,在新的版本中,再加上了窗体标题可识别当前打开的PBI催化剂属于哪个模型的,方便查看。...向PowerBI数据模型发出DAX查询,即可类似于写SQL语句向关系型数据库查数据一般,将数据模型里的明细数据查询出来。...故通过开放DAX查询接口的方式,让用户可以在PBI催化剂上填写DAX查询语句,向数据模型发出查询后,最终数据导出至Excel表格。...本功能除了核心的DAX查询,还将对查询的周边功能进行开发,自动获取当前PowerBIDeskTop最近的DAX查询,清洗DAX查询(将自动获取到的DAX查询多余的查询条件剔除)、格式化DAX查询,保存DAX...报表层元数据批量管理 此功能具有革命性意义,因当前PowerBI外部工具功能,仅限于开放PowerBI模型层访问、修改权限,没有对报表层开放接口。
开启相关预览功能 首先需要开启相关的预览功能: 重启 PowerBI Desktop 后生效。 新筛选器体验 此前的更新已经介绍过该功能。本次更新改进了更多细节。...在制作 PowerBI 报告时,尤其是在线版的报告,需要报告级、页面级以及可视化对象级不同的筛选器来实时完成某些筛选,该特性会非常使用,尤其适用于场景:从多个元素(元素个数大于10)中选择一部分。...改进的PY和R的编辑器 喜欢使用PY或R的战友现在可以使用与DAX一样的编辑器功能了: 包括智能提示以及编辑器行号,放大缩小等特性。...要想理解好关键影响因素在PowerBI中的实现,要做到: 1、理解解释此增长以及找出分布的不同 2、理解模型多个表构成的分组效果 这里举一个例子:我们知道在售卖的产品中,有不同的打折方案,是什么因素导致了折扣的不同...这是否算是暴露了黑科技,以及未来的走向,上述代码可以在DAX Studio中运行,但却无法在PowerBI的DAX编辑器中运行,看来默认的用户编辑界面,微软暂时封锁了该功能,希望用户通过拖拽的方式来运行
在连接查询语法中,另人迷惑首当其冲的就要属on筛选和where筛选的区别了, 在我们编写查询的时候, 筛选条件的放置不管是在on后面还是where后面, 查出来的结果总是一样的, 既然如此,那为什么还要多此一举的让...sql查询支持两种筛选器呢?...当把 address '杭州' 这个筛选条件放在on之后,查询得到的结果似乎跟我们预料中的不同,从结果中能看出,这个筛选条件好像只过滤掉了ext表中对应的记录,而main表中的记录并没有被过滤掉,...这似乎正是我们期望中查询的结果,然而在接下来的步骤中这个结果会被打乱 第三步,添加外部行。outer join有一个特点就是以一侧的表为基,假如另一侧的表没有符合on筛选条件的记录,则以null替代。...第四步,应用where筛选器 在这条问题sql中,因为没有where筛选器,所以上一步的结果就是最终的结果了。
最后,打开多个pbix文件,需要多个模型间转换时,在新的版本中,再加上了窗体标题可识别当前打开的PBI催化剂属于哪个模型的,方便查看。 ?...,不能在Excel文件中直接根据服务器地址localhost来创建,需要加上变化的端口。...向PowerBI数据模型发出DAX查询,即可类似于写SQL语句向关系型数据库查数据一般,将数据模型里的明细数据查询出来。...本功能除了核心的DAX查询,还将对查询的周边功能进行开发,自动获取当前PowerBIDeskTop最近的DAX查询,清洗DAX查询(将自动获取到的DAX查询多余的查询条件剔除)、格式化DAX查询,保存DAX...报表层元数据批量管理 此功能具有革命性意义,因当前PowerBI外部工具功能,仅限于开放PowerBI模型层访问、修改权限,没有对报表层开放接口。
报表方面 性能分析器 很多人会问如何对PowerBI进行性能优化,无疑此次的更新给我们提供了这样的功能: 每一个图形元素的渲染都可以包括三部分时间: DAX查询时间 视觉对象显示时间 其他 另外这里提供了复制查询的功能...筛选器面板改进 筛选器面板的改进主要体现在: 排序 这点完全是从用户角度出发,因为这个筛选器面板是为了用户设计的,用户的需求会非常灵活,例如筛选器的排列顺序位置等,因此,必须能够更加灵活的定义筛选器,虽然本次有了这个改进...支持主题 筛选器支持了主题,可以像配置PowerBI颜色一样,对筛选器进行主题的设置,例如: { "name": "FilterPaneTheme", "visualStyles":...这种情况在选择切片器、多选以及交叉筛选时会出现。 当一个可视化元素处于隐藏状态,查询会自动取消。 当切换页面时,上一个页面未完的查询会自动取消。 当关闭报告,所有的查询将自动取消。...: 在PowerBI中的架构如下: ValQ可以胜任的角色及场景: 大家可以自行尝试,这个工具还是有很强的专业性的。
并粘贴到另一个 PBIX 文件中。其原理如下: 将视觉对象从A文件复制粘贴至B文件,如果B文件具有同样名称的列和度量值则使用,否则则报错,并提供修复错失: ?...新的筛选器面板 对于已经存在的报告是不会自动打开该功能的,需要手工启动,如下: ? 可以看到: ?...当选择任何视觉对象后,可以将该视觉对象的视觉级筛选放置在该筛选器面板,甚至包括图片和前N项,如下: ? 这个更新很有用,对于不同的视觉对象,可以均开放筛选器,可以让用户随时筛选需要看到的内容。...再复习下什么是中国式复杂报表,就是配备任意复杂组合的表头的报表,很显然这种报表在PowerBI中是无法拖拽出来的,但可以制作表头并配合DAX公式计算每个报表单元格的值,但这里有一个重大缺陷: 由于只能使用一个度量值...另外,值得一提的是 DAX 编辑器可以进行实时缩放了,按住Ctrl+鼠标滚轮(或者:Ctrl + “+/-“ )就可以调整大小,如下: ?
这类构造可能用到大量 DAX 特性以及函数,包括但不限于:筛选上下文,行上下文,上下文转换,DAX查询,VAR,EARLIER,SUMX,RANKX,TREATAS,{ },按列排序,CALCULATE...但其他,小计,合计总在最后; 九、矩阵的计算是全动态的,如:切片器和其他图表可以交叉筛选该矩阵; 十、矩阵的数字是可以导出的,且保持数字格式可以在 Excel 中进一步处理。...如果您可以对照该十大诉求给出可复用的套路,你的 PowerBI 以及 DAX 的构建水品就可以满足日常应用了。 其中,具有真正核心地位的是第九点,它能来确保矩阵是动态,而不是一个固定死的矩阵。...很明显,相比于完美版 v3.0 版本 DAX 引擎执行而言,完美增强版 v4.0 将 DAX 引擎执行有了大幅度提升: DAX 引擎 SE 查询优化了 5 倍以上 DAX 引擎 FE 查询优化了 3 倍以上...在构建中国式复杂矩阵的过程中,涉及到几乎所有 DAX 基础和高级特性,正可谓一个案例又顶了一套课程。
计算组为何而生 很多人只学习已经存在之物,例如: 他知道 DAX 存在,所以学习 DAX,但不问 DAX 为何而生 他知道行上下文的存在,所以学习行上下文,但不问行上下文为何而生 他知道筛选上下文的存在...在这个基础之上,存在一些细节的调整,例如:顺序,格式等。 下面给出在 PowerBI 中的实践方式。 开启 PowerBI 的增强元数据 确保下载了最新版的 PowerBI 桌面版。...Tabular Editor 轻装上阵,它就是面向 DAX 引擎的定义文件的快速编辑器。...可以看到其实这里完成了两个对 DAX 引擎的查询, 第一个返回了排序规则,这与我们当时建立的规则一致。 第二个返回了实际数据。 数据中包括了格式化字符串用来指定数据的格式。...在此基础上,还会扩展出更多复杂的情况,我们后续讨论。例如:如果一个指标碰上了多个计算组,怎么办。我们随后再来描述。
一发不可收拾,灵感不断,时隔4年,Excel与PowerBI互通互联方面,仍然有许多可改进的地方,继DAX查询导出数据可输出连接方式后,这一次,再标配上带连接的智能表可再次修改DAX查询,满足智能表某些条件需二次修改的场景...活的表格,与模型层有关联,可自行修改DAX查询语句获取新的结果 关键中的关键,唯有可变更端口号,才能在下次再打开时复用才能成为真正的可刷新 历史功能导读 Excel催化剂发自内心地热爱着PowerBI...这样的结局,最终让PowerBI社区的群体,第一印象中Excel催化剂是面向Excel群体而存在,而不是PowerBI,甚至也容易面对一些有一点点PowerBI技术小学问的不屑。...将PowerBIDeskTop性能分析上的DAX查询,直接可复制到Excel催化剂的DAX查询编辑窗口中,经过【清除筛选条件】操作后,得到干净DAX查询语句。...清除多余筛选条件和分类汇总后的结果如下: 将导出数据字典进行再优化,更全面的PowerBI模型解读 利用老外PowerBI的MVP做好的模板,经笔者再改造升级,和Excel催化剂的功能进行整合,最终实现一键生成模型数据字典的效果
加入 PowerBI自己学 知识星球 可以:下载源文件,边学边练;遇到问题,提问交流,有问必答。头尾部分析很常用,也就是做得好的和有待提升的,择其善者而从之,其不善者而改之。...解决方案筛选器比切片器功能高级一些,视觉对象筛选器有一个功能是在它支持筛选TOPN(前N个),可以从上往下数,也可以从下往上数。举例在报告页面上显示销售达成率的前5名和后5名销售人员。...模型操作步骤在画布中添加视觉对象后,在视觉对象筛选器中,展开人员字段,筛选类型选择前N个,显示上或下5个,把度量值SalesAch%放入值中,点击应用筛选器。...下面左图是前5名,下面右图是后5名,结果如下:拓展1 不管视觉对象中是否有人员字段,如果需要筛选前或后N名的数据,都可以把人员字段放入视觉对象筛选器中进行筛选,这样视觉对象中的数据就只返回筛选结果对应的数据了...2 这种筛选会包含并列的数据,如果要严格去并列,需要生成一个去并列的排名度量值替换SalesAch%,参考第二章的《排名:RANKX,RANK,ROWNUMBER》。
比如说通过DAX公式返回“订单”表的数据,在表达式编辑器中输入以下代码: EVALUATE '订单' 如下图所示: 小勤:’订单'就是订单表在数据模型里的表名称吧。...大海:其实就是告诉Excel去执行后续的DAX查询,所有的查询表达式都用EVALUATE开始。 小勤:好的。那么如果不只是这样整个表的数据取回来,该怎么办?...大海:DAX里提供了很多表筛选、查询等的函数,通过这些函数的配合,就可以实现表的筛选、组合等等功能。...或者从多个表里组合数据呢? 大海:这些就涉及到其他的DAX函数了。以后再慢慢跟您讲吧。你现在可以先练习一下这些简单的。 小勤:好的。...在线M函数快查及系列文章链接(建议收藏在浏览器中): https://app.powerbi.com/view?
DAX,simple but not easy.DAX,简约而不简单 ? 如果说99%的人不真正理解PowerBI DAX的SUM,你信吗?...现给出结论:在DAX中不存在真正的SUM。...在很多学员中,都记住了这个特殊规则,但这里想告诉你的是:DAX有两个上下文,一个行上下文,一个筛选上下文,所有的运算都是发生在这两种上下文中,无一例外。既然无一例外,那么SUM会不会忽略行上下文呢?...真正的原因在于:在DAX中,是不存在SUM的,任何的SUM在计算时都会转化成SUMX。...C语言经过了编译器才转换为二进制代码得到执行;在DAX中,类似的是DAX表达式会被转换成对DAX引擎的查询计划才会被执行。
PowerBI 2018年10月更新可谓是一次具有里程碑意义的更新,这次更新中引入了 99.99% 的人(尤其是非大数据领域业务伙伴)都不知道的大数据分析领域的神兽——企业版Apache Kylin。...他们包括: 报表方面 筛选器卡支持搜索 交互体现增强 ArcGIS Map 性能增强 建模方面 DAX 编辑器改进 分析方面 Power BI Service支持复合模型及聚合 解释不可累加度量值的增长...打开预览功能 为了更好地理解本次更新,首先应该打开预览功能: 视觉筛选器允许搜索 如图所示: 这让用户可以快速找到可以要筛选的信息。...在本次改进以后是这样的: 哇,感觉速度块多了~ DAX 编辑器得到改进 DAX 是 PowerBI 中非常重要的内容,也许是最重要的,而对编辑器的支持一致是大家的诉求,本次微软PowerBI Team给出了官方的改进...首先看看样子感性认识下: 然后你可以想象到,像任何数据源一样,可以这样: 由于该连接器尚在开发中,所以很正规的告诉用户这点,然后: 这里使用具有非常大威力的【DirectQuery】。
新加入 DAX 函数 - REMOVEFILTERS 该函数用于取消外部筛选设置,一般用于 CALCULATE 的后置参数,其作用与 ALL 完全等价,只是在名称上的一种更加明确的语义。...关于 DAX 函数 ALL 理解有非常复杂的长篇大论,而在罗叔看来有一个绝佳的理解技巧,我们会专门发文来说明。 而未来只需要记忆,当你想移除筛选器,就用 REMOVEFILTERS 即可。...小技巧,你可以故意犯错,然后得到: 这样你可以再次清晰地看到在 DAX 中只有6种最基本的数据类型,这比 Excel 还简单。...可以导出数据质量数据 在查询编辑器中,有几个地方可以监测数据质量,如下: 导出为: 导出为: 导出为: 导出为: Google 分析模板 如果你在使用Google分析,那可以接入数据并直接使用内置模板,.../ DirectQuery 模式查询性能改进 DirectQuery 将 DAX 直接转译为 SQL 并将查询下压到 数据源 完成 SQL 查询,这就涉及到 DAX 到 SQL 的翻译能力,显然增强了。
性能优化,在 DAX 中是很重要的问题,对 DAX 的性能优化大致可以归结为针对 SE(存储引擎) 或 FE(公式引擎) 的性能优化。...这个定义没有问题,放在 PowerBI 中的计算也是正确的,但不久就会发现它的性能问题,于是,通过 DAX Studio 来检查可以看到: ? 我晕,居然惊现了 779 个查询。...该查询的意义是计算每天的大订单个数。但这种方法显然是不行的。虽然在度量值的定义上非常自然。 我们再来看看从 PowerBI 中拖拽的情况,如下: ?...] ) , 'Order'[LinePrice] > 1000 && 'Order'[LineProfit] > 0 ) 作为筛选器参数,会覆盖外部的筛选,这也是不正确的逻辑...总结 当需要在基础度量值中使用筛选条件时,必须注意: 仅仅使用所必须的列,提升性能 使用 KEEPFILTERS 包裹,确保逻辑正确 这样,基础度量值就可以携带复杂的筛选器参数而不影响性能了。
领取专属 10元无门槛券
手把手带您无忧上云