DAX
DAVIS-BI
IN DATA WE TRUST
展开
-
DAX:SUMMARIZECOLUMNS 进阶
本文讲述SUMMARIZECOLUMNS进阶用法,包括IGNORE, ROLLUPADDISSUBTOTAL, ROLLUPGROUP以及NONVISUAL前述建议阅读本文前,你已阅读《DAX: SUMMARIZECOLUMNS 基本原理与用法》或已掌握SUMMARIZECOLUMNS的基本用法,因为本文不会包括这部分内容。SUMMARIZECOLUMNS拥有内置函数IGNORE, ROLLUPADDISSUBTOTAL, ROLLUPGROUP以及NONVISUAL,这些函数在文档以及DAX.GUID原创 2020-12-02 19:37:16 · 684 阅读 · 0 评论 -
DAX: SUMMARIZECOLUMNS 性能优势分析
本文将会拿SUMMARIZECOLUMNS函数与SUMMARIZE做个对比,分析SUMMARIZECOLUMNS的性能优势前述MarcoRusso在此前的文章中,首先讲到SUMMARIZE函数在有度量值时的执行效率问题,并在其后提出了其与ADDCOLUMNS函数组合的替代方案,SUMMARIZECOLUMNS发布后,又建议我们使用其来代替SUMMARIZE与ADDCOLUMNS的组合,但对于深层原因,Marco也只是点到为止,下文讲结合示例数据集对此展开,分析原因。当公式中不含度量值时,两个函数在性能原创 2020-12-01 17:48:07 · 908 阅读 · 0 评论 -
DAX: SUMMARIZECOLUMNS 基本原理与用法
本文讲解DAX函数SUMMARIZECOLUMNS基本的原理与用法前述国内外关于DAX函数的讲解已很多,但个别函数还是有必要拿出来讲讲。本文结合MarcoRusso关于SUMMARIZECOLUMNS函数的理论以及自身对其的研究,专门讲解该函数,并分为多个篇章。本篇将讲解其基本原理与用法。语法首先是函数的语法:SUMMARIZECOLUMNS( <groupBy_columnName> [, < groupBy_columnName >]…, [<filterT原创 2020-12-01 16:32:48 · 5018 阅读 · 3 评论 -
Power BI非常规时间智能场景解决方案:以去年同期最近星期数为例
我是P特我最牛原创 2020-09-11 17:37:56 · 806 阅读 · 0 评论 -
PBID外部工具DAX Beautifier更新文档
本文是Power BI Desktop外部工具DAX Beautifier的版本更新说明(随版本动态更新),有关DAX Beautifier的详情与使用请参考此Github页面的Readme(英)或《PBID外部工具DAX Beautifier使用必读》(中),本文不再赘述。最初版本号为1.0.0,工具每次修改或移除,追加功能都会增加新的版本号,这些更改主要基于用户的反馈以及本人的测试。如果想使用该工具的历史版本可点此到达下载页面。版本 1.0.1如果没有检测到需要格式化的公式,程序将会跳过提交环节原创 2020-08-17 11:24:06 · 373 阅读 · 0 评论 -
PBID外部工具DAX Beautifier使用必读
关于DAX BeautifierDAX Beautifier是由本人(Davis.Z) 开发的一款Power BI Desktop外部工具,同时也是全球Power BI社区第一个基于Python语言开发的PBID外部工具,它的作用是可以使你一键美化PBI文件中的所有DAX公式,增强代码可读性并大幅提升开发效率。事实上,该工具早在2个月前已开发完成,但由于当时PBID尚未迎来7月的更新,还没有加入外部工具这一功能,因此当时的方案是需要手动解压PBIX或PBIT文件,然后运行程序修改文件夹下的DataMod原创 2020-08-06 22:48:19 · 1276 阅读 · 1 评论 -
Power BI Desktop 关于使用度量值组
本文是对PBI Desktop新功能度量值组的一点补充说明,我不会做任何关于此的重复劳动。具体理论和应用,请参考文末所列的文章及资料,因为这些资料已经非常完美。度量值组在Power BI Desktop已获支持昨天,微软Power BI和往常一样,发布了Desktop的月度更新,不同以往的是,这次更新不仅仅新增了一部分来自Excel的金融类DAX函数,最令人惊喜的是,这个版本的Power BI表格模型已经潜在地支持了度量值组。注:在旧版本Power BI Desktop,比如最近的2020年6月版本,原创 2020-07-16 18:05:30 · 1209 阅读 · 0 评论 -
一分钟格式化所有DAX及M语句
关于“DAX & M批量格式化工具”作为Power BI报表开发者,DAX代码的可读性十分重要,几年前SQLBI推出了一个免费web服务:daxformatter,它允许你粘贴你的DAX代码到输入框,一键助你完成代码的换行与缩进,提升代码可读性,最近,PQ里的M语言也有了类似的服务—Power Query Formatter, 利用这些工具,可以帮你无需手工操作就能完成换行缩进,提升你的报表开发效率。不过,这些工具的美中不足是不能一次性格式化多个公式,即使可以,一个个粘贴公式也是不方便的,因此,我原创 2020-06-28 11:30:41 · 934 阅读 · 1 评论 -
DAX: 控制表格显示行数
本文要解决的问题:利用DAX度量值,控制前端表格显示行数需求描述如下图,是一张设备采购与折旧记录表,需求是当用户选择任一单号,或多选以及全选,可以提供一个勾选项,使表格仅显示一行数据,至于该行是日期最近的一行还是金额最大的一行,提供一个单选框由用户决定。如下,选择了NO_121,采购项是戴尔笔记本电脑,用户可以选择依据采购日期,仅显示离当日最近的一行数据(即下图最后一行)。解决思路将问题分解。首先实现无论选择任何单号,多选或全选,通过切片器控制使表格仅显示离当日最近的一行数据。最后,提供一个切片器原创 2020-06-15 15:58:49 · 1060 阅读 · 0 评论 -
DAX:为字段添加约束(解决负库存问题)
前述年前,有人在知识星球问过我如何用DAX计算累计库存变动,并且避免负库存,解决问题后并没有专门为此写技术分享,但近期我又收到了类似的提问,因此觉得有必要写一篇博客,讲解此情况下如何用DAX为计算列设置非负约束。面临的问题在企业环境中, 有许多场景需要BI人员为表中的字段添加检查约束, 比如在零售行业的促销活动中,就可能会遇到高并发场景,因超卖而产生的负库存问题,这时,必须要提前为库存值设置检查约束,当某产品库存小于0时,强制将其设置为0,避免库存为负;有些企业可能会为某些产品设置安全库存,这时约束条原创 2020-05-22 11:16:08 · 418 阅读 · 0 评论 -
DAX: CalulationGroup (度量值组) 概念与应用
【前述:根据微软Power BI排期,原本只能在SSAS 2019中使用的DAX特性–CalulationGroup,将在今年的Desktop中发布。本文将围绕CalulationGroup,言简意赅的讲解它的概念,以及它在PBI报表中具体是如何被应用的,能为我们带来什么。】众所周知,近期国内疫情严重,宅在家里,工作要做,游戏要玩,但对BI技术的探索也不能少。偶然想起半年前Macro Russo...原创 2020-02-24 17:12:40 · 1114 阅读 · 0 评论 -
DAX函数:CONVERT与REMOVEFILTERS
微软2019年8月发布了两个新的DAX函数:CONVERT和REMOVEFILTERS。它们非常新,在撰写本文时(2019年8月23日),它们仅在Azure Analysis Services和Power BI Service中可用,甚至DAX Guide也没有列出它们。在这篇博文中,我展示了它们的用法。CONVERT函数允许您显式地将表达式的数据类型转换为指定的数据类型。它接受两个参数:...翻译 2019-12-27 10:34:31 · 696 阅读 · 0 评论 -
[PowerBI]两种方法计算每月或每季开发的新客户数量
两种方法计算每月或每季开发的新客户数量简述客户分析中,有时你可能需要分析每隔一段时间有多少新客户流入(同样地,有多少老客户流失),有时可能需要通过新客户开发数量来对员工绩效进行考核等等,对于此,本文分享了两种不同的DAX写法来计算新客户开发数。过程数据表(部分)如下:方法一首先把订单按照客户ID和下单时间划分为"首单"和"非首单",然后计算每个月有多少个客户的订单被标记为"首单",那...原创 2019-03-24 22:30:09 · 13457 阅读 · 0 评论 -
[PowerBI]使用PowerBI进行篮子(购物篮)分析
使用PowerBI进行篮子分析简述商业分析中我们通过篮子分析来发现产品之间的关联及客户的购买行为,“啤酒和尿布”的故事已经成为了难以过时的经典,业务部门渴望知道购买A产品的客户有多大概率会购买B,但前提是我们需要知道购买A产品的人有多少购买了B产品(或其他产品),即P(B|A). 而PowerBI允许我们利用DAX建立一种在产品之间的动态关系,当我们选择一个产品后,可以让页面显示客户先买了哪些...原创 2019-03-21 21:16:26 · 4330 阅读 · 0 评论 -
[PowerBI]用DAX实现20/80(帕累托Pareto)分析
简述本文将使用DAX解决以下计算:1.实现对产品的AB分类,找出总共贡献利润占总利润80%左右的那些产品2.计算出排名前20%的订单所贡献的销量(销售额或利润)占总销量(销售额或利润)的百分比3.计算出排名前20%的客户所贡献的销量(销售额或利润)占总销量(销售额或利润)的百分比方法对于以上所有的二八分析度量值的计算,我们分别使用不同的方法。其中第一个我们使用Marco Russo的方...原创 2019-03-29 21:31:48 · 7319 阅读 · 0 评论 -
[PowerBI]DAX虚拟连接函数:TREATAS()用法介绍
简述TREATAS()函数是DAX中用于表格间虚拟连接的函数,当遇到如下情况时,可以考虑使用TREATAS:1.维度表或事实表之间没有可以单独关联的列;2.出现多对多或其他无法使用直接的方法关联的情况3.数据模型非常复杂时,通过建立虚拟关系以减少对表格之间物理连接的依赖(根据Marco的说法:额外的物理关系可能会在过滤器传播到其他表时产生某种副作用)过程本案例数据是如下两张没有关联结...原创 2019-03-27 01:19:37 · 20490 阅读 · 2 评论 -
[PowerBI]用DAX强化图表交互力
用DAX强化图表交互力简述评价一个报表的好坏,至少有三个方面。一,是否符合业务需求;二,数据是否准确无误;三,用户使用的自由空间。这其中的第三点,许多人往往重视不足。本文介绍了我自己在提升报表交互力方面的工作中琢磨出的一点点小技巧,让PowerBI报表向智能化再进一步。目标1.可以让图表根据用户的选择,显示对应的字段的数据(跨列筛选)2.让用户可以自由选择需要显示或需要移除的字段3.允...原创 2019-03-24 12:23:40 · 1750 阅读 · 0 评论 -
[PowerBI]用DAX完成简单线性回归
简单线性回归的方法:只需要一个度量值就可以完成简单线性回归:要让下面代码适用于你的模型,只需要把对应的字段/度量值替换为你自己模型的字段/度量值:Simple linear regression =VAR Known = FILTER ( SELECTCOLUMNS ( ALLSELECTED ( Table[Column] ), ...翻译 2019-04-05 15:58:53 · 5981 阅读 · 1 评论 -
[PowerBI]用DAX构建筛选信息栏
简述本文主要介绍如何使用DAX构建筛选信息栏。筛选信息栏,就是能够在整个报表或某个页面以可视文本形式展示目前数据所被应用的筛选上下文,其作用主要有二:1.展示当前页面或特定可视化控件的筛选上下文,以便于进行数据及DAX公式的验证与错误排查;2.便于用户掌握目前数据的筛选情况,当筛选器较多,经常需要用到多选或不同的可视化控件应用不同的筛选条件时十分有用。本案例目标是在对下表进行筛选时,让信息...原创 2019-04-01 00:53:12 · 2551 阅读 · 0 评论 -
[PowerBI]利用DAX找出流失客户
简述企业要提升利润,其中一点就是降低客户流失率,成功挽留一个客户比开发一个新客户重要得多,为此,我们需要在PowerBI报表上展示出定期的客户流失情况,以及分别是哪些客户已经流失,哪些客户将要流失,这样,就能帮助分析者尽量降低客户流失率。过程计算客户流失情况,其原理与计算新客户开发数类似。数据结构部分如下:这里,对于流失客户,我们的定义是两年内(不包括近X个月)有购买行为,但近X个月没有...原创 2019-03-27 23:13:51 · 3175 阅读 · 5 评论 -
[PowerBI]使用DAX计算重复购买率与新老客户自动分类
使用DAX计算二次购买率与自动识别新老客户简述原创 2019-03-24 21:18:23 · 9885 阅读 · 0 评论