需要作如下几种事情: YearToDate, QuarterToDate, 和MonthToDate 的计算 比较之前的年、季、月 回滚一段时间的聚合,比如最近三个月的累加。...比较平行时间段,比如与之前一年相同的月份。 当使用随时间进行的数据分析的时候,很可能要使用DAX函数。...下面步骤说明使用DAX创建表的过程: 1 - 打开PowerBI Desktop文件C:\PowerBiDesktopSamples\PowerBIDataModel.Pbix. 2 - 切换左侧的tab...(MIN('Stock'[PurchaseDate])), ENDOFYEAR(MAX('Invoices'[InvoiceDate]))) 这个公式扩展了DAX的计算,两个计算年的公式也是极其有帮助的...注意 为了时间智能在PowerBI中能够正确使用一定要保证日期表和数据表中的数据类型是date或者datetime。
2、使用DAX函数创建日期表 DAX函数创建日期表的方式网上有很多种,这里我就介绍最简单的两种方式:CALENDARTAUTO和CALENDAR函数构建日期表。 ...小结:使用DAX函数创建日期表最大的好处不用外置表格,不用担心文件路径发生改变。这里只是展现了PowerBI DAX函数创建日期表的两种方式。...1、计算业绩的同比 同比时今年和去年同期数据的对比,公式:同比(%)=(本期销售业绩-去年同期销售业绩)/去年同期销售业绩*100% 在计算同比之前,我们需要先计算本期销售业绩和去年同期销售业绩...最后新建环比度量值,公式:环比 = DIVIDE([本期销售业绩]-[上月销售业绩],[上月销售业绩]) 3、计算累计销售额 在计算累计销售额之前,我们需要知道什么是累计销售额。...函数以及M函数创建日期表 2、使用时间智能函数DATEADD,TOTALYTD与万能函数CALCULATE进行计算指标 3、使用应用商店的图表控件进行多种类型的KPI展现,并介绍了两种处理方式 注意:PowerBI
整理时保持排序 这里我们需要了解产品在一个月和一年内的排名,然后显示排名随时间的变化。为此,我们创建一个凹凸图,其中以折线图形式显示随时间的变化。...可在左侧看到复印机和传真机已经从销售不佳的产品变成目前的销售前 3 甲。还可以看到,传真机和复印机的购买量波动很大。...对该效果的实现,虽然 DAX 公式并不复杂,但背后涉及需要透彻理解 DAX 计算原理,该复杂度远远超越了写出同样表达式的 Tableau 的程度。...Tableau 具有一套完备的报表级计算公式系统。 PowerBI 可视化组件系统并不完备,典型的缺失如:可视化对象的分组整体显示。 PowerBI 没有报表级计算公式系统。...最后,致敬 Tableau,没有这么优秀的对手,这么可能让 PowerBI 变得更强大呢,通过对 Tableau 的体会和理解,可以更多加深对 BI体系 的思考,也更清楚 PowerBI 的软肋,对于应对实际问题
SUM的迷思 从一道经典的问题来看: ? 用户在订单表创建了一个计算列,并写入一个简单的公式,在按下回车的时候,每行的值应该是多少?请思考10秒继续。...但如果你用自己学的DAX知识来解释的时候,就会发现发现问题了,我们一起来看: 第8行,在FILTER 第9行,ALL(DimDates[Date])得到了所有的日期,由于FILTER是迭代函数,进行迭代并逐一创建行上下文...这个问题已经超过了这里讨论的范畴。直接可以给出结论是:由于 DimDates 是日期表,系统会在 CALCULATE 的计算中自动加入 ALL( DimDates )。就不再展开了。...PowerBI的学习者有三类: 1、拖拽可视化的; 2、解决实际问题就行,搞不清楚就记住; 3、追根究底的。...学习DAX的阶段是: 1、看了能懂,写不出来 2、基础的写的出来,复杂的写不出来 3、复杂的写出来,但有的坎过不去 4、理解所有细节,性能调优 PowerBI的坑爹就是越坑越着迷越上瘾,真正学会了 DAX
罗叔曾经阅读过一些技术书籍,为了讲解技术理念,会在一系列的实际案例中,逐步揭示。我们将按这个思路在实际案例中为大家带来解决问题以及感悟其中的公式。这里会涉及:设计模式,常见招式以及业务问题。...问题背景 HR 使用Excel已经可以统计很多内容了,但 BI 的特点,大家知道是 动态 的。本文讲解如何在 PowerBI 中实现 HR 在离职人数的计算。...设计与实现 在 PowerBI 中,编写 DAX 来实现复杂计算逻辑时,常常会进入的坑包括: 有多种写法,哪种写法更容易理解; 动态性的保持与屏蔽; 度量值的起名。...由于 ‘Date’ 是日期表,DAX 引擎会自动为 CALCULATE 增加一个参数 REMOVEFILTERS( ‘Date’ ),我们姑且称之为环境3。...[日期] ) 会被 DAX 引擎转为 MAXX( ‘Date’ , ‘Date’[日期] ),我们进一步重写一次这个定式,请注意用户用手输入的公式: CALCULATE( [Measure] ,
今天继续日期主题,给大家带来三个关于日期计算的函数 date:返回指定年月日对应的日期 edate:计算指定日期之前或之后N个月的日期 eomonth:计算指定日期之前或之后N个月的月底日期 各函数要点已在图中列出...这三个函数在EXCEL里同样存在,功效类似 但需要注意“date”函数,在年份判断上有些差异 当年份数字位于0-1899之间时,EXCEL会自动加上1900 而在PowerBI中,年份数字在0-99...《东哥陪你学DAX》是我给大家带来的一个小微系列讲座。本讲座不定期更新,主要围绕PowerBI的DAX来介绍,以小卡片的形式,每次安利一个函数,希望能在枯燥的学习道路上陪伴大家,共同进步。
,所欠缺的就是如何衔接公式,这个可以靠不断的试验去慢慢尝试,只要这样记得才会深刻。...但是,我要显示每个客户每个月的库存余额,这个就是不能完全累加,因为我们需要呈现的是每个客户对应月份里面最后一天的数值。 这个我们需要咋处理呢?来,跟着白茶学习的思路走。...[strip] 将数据导入PowerBI中,进行常规操作,建立日期表、建模定关系。...,从矩阵中看没啥大问题,但是在表中看有很明显的漏洞。...白茶会不定期的分享一些函数卡片 (文件在知识星球PowerBI丨需求圈) [1240] 这里是白茶,一个PowerBI的初学者。 [1240]
存在一个问题: 大部分 CEO 并不是在一个月(季度,周)结束时才关注目标的进展,他们需要随时可以看到项目当前的进展。...举个例子,周1开会,对于用户增长这一指标,往往知道本月的指标,还需要知道到了周3,本周的周1到周3相对上周的周1到周3是否有所提升,如果没有提升,说明策略很可能是有问题的,需要及时调整,不可以等到下周1...PowerBI 的不足 在给出我们正确的解决方案前,我们来看看在PowerBI中可以做什么,是否可以解决这个问题。...这还不是最大的问题,最大的问题是这里的相对日期并没有TD(To Date)的概念,例如:WTD指的是本周一至今;MTD指的是本月一日至今。 因此,PowerBI的相对日期区间比较受限。...总结 从技术上看,本文涉及PowerBI及DAX的知识点包括: 日期表 日期区间 日期区间(XTD) CALCULATE灵活的取消筛选 动态指标KPI 双向筛选 筛选器的作用范围 IBCS & ZebraBI
一个PowerBI的初学者,记得在刚开始学DAX的时候,一个同比环比的问题困扰了我很久,每次都是觉得自己刚刚理解一点东西了,但是发现后续的坑更多。话不多说,LOOK!...结果如上图,看起来没有丝毫的问题,但是左边的英文月份尤其的显眼。白茶在之前就说过,我们做的报表,呈现对象绝对不仅仅是自己,还有其他对象,这就需要我们在做的时候,多考虑一些细节。...话不多说,添加自己的日期时间表。...建立模型关系: 这样看起来是不是顺眼多了,来,接下来我们要开始准备工作了,同比与环比的计算,要准备本期、上期、同期、上期差额、同期差额,这五个度量值,具体公式如下。...虽然相比操作过程而言,自己写DAX的过程很繁琐,但是当熟悉了DAX的使用办法之后,很多步骤都是可以简化进行的,这一点可以随着经验慢慢变化的。
下面我就结合Power BI功能,如何利用DAX更加智能便捷的解决这个难题; 知识点 数据模型:日期维度表和事实表 DAX基础公式: CALENDARAUTO SUM CALCUALTE SAMPERIODLASTYEAR...PowerBI会根据我们导入的销售历史数据上面的日期,在上面表格中就是Order Date订单日期,来自动为我们创建一个Data Hierachy。 ?...然后我利用DAX新加了Year和Month的Column。 ? (表1-3) 紧接着就是通过建立relationship,创建一个简单的数据模型Data Model ?...在这个计算之前,我们要通过DAX写出几个基础的数值,这里要用到几个DAX的基本概念 SUM, CALCULATE, SAMEPERIODLASTYEAR。...2019年1月1日,然后也倒推12个月的日期是2018年1月1日。
PowerBI中最常用的表是什么? 毫无疑问,日期表! 不同行业的分析,维度表有类别之分,数据表有指标计算之别。但当谈到日期时,基本是一致的。而且日期表也是我们使用时间智能的前提。 ?...由于日期表、时间智能公式非常的好用,往往在做分析时我们都会加入一张日期表。对于我个人,因为经常会收到一些读者发来的数据建模问题,建立日期表对我来说也是一项重复性操作。...这种方法很快很方便,只不过对于很多人这属于黑箱操作,并不理解语句的具体含义。 ? 4) 写DAX公式生成 本文想推荐的就是这第四种写DAX公式的方法,它是所有方法中最快的。...只需要两个步骤,新建表,再复制一段DAX公式。 ? 为什么说这是一个非常好用的方法?我的理由有4点: 1....这样的好处是在后期使用中不会涉及到日期表的排序问题。(比如经常会遇到“2016年11月”会排在“2016年2月”的前面,而用201611和201602就会很好地避免了这种问题) ? 4.
语法 语法1: DAX= TOTALMTD(,日期>[,]) 语法2: DAX= TOTALQTD(,日期>[,]) 语法3: DAX= TOTALYTD(公式: 对比DATESMTD = CALCULATE ( SUM ( '销售明细'[销售数量] ), DATESMTD ( '销售明细'[销售日期]) ) 结果对比: [1240] 可以看得出来两者的返回结果是一致的...例子3: TOTALYTD例子 = TOTALYTD ( SUM ( '销售明细'[销售数量]), '销售明细'[销售日期] ) 结果: [1240] 逐日累计,计算本年度迄今为止的数据值累计。...到这里,时间智能函数基本上就告一段落了,对于刚开始学DAX的小伙伴来说,这一类函数作为过渡使用是再好不过的了,如果想根据具体的案例去解决具体的问题,那么还需要多多深入了解DAX哦。...白茶会不定期的分享一些函数卡片哦。 (文件在知识星球PowerBI丨需求圈) [1240] 这里是白茶,一个PowerBI的初学者。 [1240]
例子 模拟数据: [1240] 这是白茶随机模拟的数据,将其导入到PowerBI中,建立日期表,模型关系如下: [1240] 因为事实表中,有两列日期,白茶设定日期表对应下单日期,此时送达日期处于未激活的状态...此时用USERELATIONSHIP函数激活送达日期与日期表的关系,停止下单日期与日期表的关系可以完美解决这个问题。...送达数量 = CALCULATE ( [下单数量], USERELATIONSHIP ( '例子'[送达日期], '日期表'[Date] ) ) 结果如下: [1240] [1240] 完美计算出每个月对应的送达数量...[1240] 例子2: 添加两个维度A、B,建立模型关系如下: [1240] 这个模型关系是为了关联度(购物篮)分析做的准备。 之前白茶写过一期购物篮的文章,提到过为什么要一个模型激活,一个未激活。...白茶会不定期的分享一些函数卡片 (文件在知识星球PowerBI丨需求圈) [1240] 这里是白茶,一个PowerBI的初学者。 [1240]
本节重点介绍对比分析中的一个关键点,计算口径的问题。 选择参照物最重要的一点就是保持计算口径的一致。...在 Model-Dimstore 门店维表中新建计算列标注,用 PowerBI DAX 实现如下: 可比类型 = VAR CurYear = YEAR( [最后报表日期] ) RETURN...其中,'Model-Dimdates'[IsComparable] = TRUE(),保证同期的期间是在最后报表日期的同期之前的时间段(后期会有专门文章介绍)。...这里面有一点需要说明,店天的计算中未剔除重装店铺,一方面剔除重装时间,度量值会比较复杂,另方面重装一般半个月左右结束,对整体店效值的计算影响较小。...总结 本文经零售分析专家郑老师授权发布,用 PowerBI DAX 给出了对可比店,店效以及新开店的店天计算。 大家可以直接使用这套逻辑来放入自己的模型。
语法 语法1: DAX= ENDOFMONTH(日期>) 语法2: DAX= ENDOFQUARTER(日期>) 语法3: DAX= ENDOFYEAR(日期> [,]) 参数 日期:可以是日期列...例子2: ENDOFMONTH例子2 = ENDOFMONTH ( '例子'[日期] ) 结果: [1240] 为每个月的日期匹配当月最后一天。...例子3: ENDOFMONTH例子3 = CALCULATE ( SUM ( '例子'[销售] ), ENDOFMONTH ( '例子'[日期] ) ) 结果: [1240] 计算每月最后一日销售额,达到半累加的目的...为20年的数据匹配最大日期的销售额。 关于的例子,白茶这里就不赘述了,因为之前写过好多期了,感兴趣的小伙伴可以翻翻之前的文章。 小伙伴们,GET了么? 白茶会不定期的分享一些函数卡片哦。...(文件在知识星球PowerBI丨需求圈) [1240] 这里是白茶,一个PowerBI的初学者。 [1240]
,这里也是通过创建"度量值"来实现,操作如下: 度量值DAX公式为:订单均价 = DIVIDE('度量值表'[总营收金额],'度量值表'[总订单量]) 将创建的"订单均价"度量值拖入到之前创建的"多行卡...首先创建"商圈营收排名"度量值,度量值DAX公式为:商圈营收排名 = RANKX(ALL('门店信息'[商圈类型]),'度量值表'[总营收金额] ) 将创建的"商圈营收排名"度量值拖入到之前创建的"表...完成以上需求首先创建"年累计营收"度量值,并输入度量值DAX公式:年累计营收 = TOTALYTD('度量值表'[总营收金额],'动态日期表'[Date]) 在"报表"视图中创建创建可视化"矩阵",在动态日期表中依次选择...在资料中找到"2021~2022年工资表"导入到PowerBI中并修改对应的日期格式,如下图所示: 下面我们分别在PowerBI中针对"2021~2022年工资表"数据统计工资月同比增长率与工资月环比增长率...度量值DAX公式为:当月工资 = SUM('2021~2022年工资表'[工资]) 在"度量值表"中创建新的度量值"去年同期月份工资" 度量值DAX公式为:去年同期月份工资 = CALCULATE('
前言 之前已经简单与大家聊过 Power BI 中的分组问题了,近日朋友又问了一个实际工作中的问题,恰巧也与分组有关,便整理之后,与众位朋友共享,再谈 Power BI 分组的博大精深。...公式如下: 中间表 = SUMMARIZE ( '订单', '订单'[产品ID], "平均销售额", AVERAGE ( '订单'[销售额] ) ) 结果样例如下: 然后使用 DAX 增加计算列,公式如下...朋友的困扰 但是老板的需求要是这么简单就好了,老板希望可以根据订单日期进行筛选,但是现在的这个方法,订单日期的筛选完全无效。...解法 看过我之前博文的战友应该能有些思路,这类问题,就应该使用 DAX 来解决,我们不做计算列,不做中间表,全都应该依靠 DAX 的模型能力。...—— 延伸阅读: PowerBI DAX 区间分组通用模式及正态分布曲线 史上最强 PowerBI 全动态 RFM 模型 2.2 版 完美得无懈可击 PowerBI 全动态 RFM 模型 2.0 版
写给自学PowerBI的人 前些日子,有一位读者留言一个问题,我写了个公式过去,来回几次都没有解决,最后发现她竟然把DAX公式写在了编辑查询器里,我是五十步笑百步,因为本人也犯过同样的错误!...我把这些问题的答案都写在这一篇文章里。 M和DAX,无论这两门语言的设计初衷和用途如何,同一个工具里面要用到两种不同的语言真让人有点分裂。...DAX的样子,有点似曾相识,但与Excel里的公式还是有一定差别。 ?...而且这也是件因人而异的事情,很多人说DAX难理解,我却享受于度量值的逻辑思考,反而是对M代码怀揣敬畏之心。 我应该学习哪个 其实这个问题根据上面三个问题的回答,你可以自行推出适合自己的结论。...而且微软每个月的更新还会持续地上线新功能。 ?
3.最后一个基本度量值是计算12个月滚动销售额,使用 DAX 筛选器函数 CALCULATE 和时间智能函数 DATESINPERIOD 的组合。...(上面公式中的MAX(fSales[OrderDate]),此日期是DATESINPERIOD返回的12个月期间内的最后一个日期。...例如,如果今天的日期为2022年1月13日,并且计算的上下文选择2022年1月,则它将返回2021年2月1日至2022年1月31日期间的销售额。...”}, {2,2,”YTD Sales”}, {4,3,”12 mths rolling”} } ) 在创建动态DAX度量值之前,让我们讨论如何使用辅助表。...由于其他日期列中的值可能不同,因此我们需要调整12个月滚动总计的DAX公式以使用正确的日期列。 同样,我们需要一个辅助表来允许我们在日期列之间进行选择。
PowerBI 实现思路 这里给出在 PowerBI 中的实现思路,读者可自行尝试,我们会在后续文章给出更加充分的描述。...更复杂的日期表 这类分析一般是在完成月阶段,而由于是滚动 12 个月,因此,我们需要确保日期表需要满足: 可以标识完成月。 可以标识有足够滚动 12 个月的数据。...大概要 33 秒完成,这是一个非常慢的速度,如果查看 DAX Studio 来分析引擎时间,则有: ? 这仅仅是计算一个月的情况,如果是要对比计算,或多月计算,则面临更显著的问题。...更强大的日期表。 如果有兴趣,还可以研究非常深度的性能优化问题。 我们慢慢来一步步揭开,好玩的还在后面。...另外,这些内容未来回进入 DAX Pro 做成模板,您现在不妨就可以熟悉 DAX Pro 的使用,当这些优化的计算方法被做成模板时,您将切实地感到您在使用成果,而不是自己苦苦地思考。
领取专属 10元无门槛券
手把手带您无忧上云