如何使用 DAX 函数计算上年值

7.2 PowerBI系列之DAX函数专题-同比环比分析(dateadd) 按照月份序号对数据进行排序,结果如图所示。,否则时间智能函数可能无法准确计算。dateadd函数生成日期。 阅读详情


工坊的小伙伴们,周五好啊!关于同期的计算是一个老生常谈的问题,今天我们来看一下计算上年值的几个DAX函数吧~
# ** 数据准备**

我们虚拟从2018年1月至2019年4月的数据,如下:

file

构造日期表,可采用如下DAX语句构建:

Calendar =
ADDCOLUMNS (
    CALENDAR ( DATE ( 2017, 1, 1 ), DATE ( 2020, 12, 31 ) ),
    "年", YEAR ( [Date] ),
    "季度", "第"
        & ROUNDUP( MONTH ( [Date]) / 3, 0) & "季度",
    "月", MONTH ( [Date] ),
    "月份", MONTH ( [Date] )& "月",
    "年月", FORMAT ( [Date], "YYYY/MM" )
)

使用此表达式构造的日期表如下:

file

此表达式友友们可以研究下用到的几个函数,但无需深究,存起来到时直接使用即可。


# **DATEADD**

将日期表与事实表建立关系,如下:

file

计算当前年的实际销售金额:

Sales =
SUM ( 'Fact'[订单金额] )
计算上年同期销售金额,我们可以写如下的度量值
Sales_同期 =
CALCULATE ( [Sales],DATEADD ( 'Calendar'[Date],-1, YEAR ))

在报表视图呈现结果如下,与2018年同期数据是吻合的:

file

而当表中字段为年时,得到的结果不是截至去年同期四月的销售额,而是去年全年的销售额:

file

同期显示的是全年的数据。


# **PREVIOUSYEAR**

如果使用PREVIOUSYEAR来写上年值的话,那么度量值应该写成:

Sales_PY =
CALCULATE ( [Sales],PREVIOUSYEAR ( 'Calendar'[Date]) )

报表视图中呈现的结果如下:

file

无论表格中当前行是哪个月,Sales_PY均计算上年一整年的销售额。


# **SAMEPERIODLASTYEAR**

如果使用SAMEPERIODLASTYEAR函数来写上年值的话,那么度量值应该写成:

Sales_SP =
CALCULATE ( [Sales],SAMEPERIODLASTYEAR ( 'Calendar'[Date]) )

报表视图中呈现的结果是:

file

当表格中放置的列是年时,结果与使用DATEADD计算结果是相同的。


# **PARALLELPERIOD**

如果使用PARRELLPERIOD函数来写上年值的话,那么度量值应该写成:

Sales_PP =
CALCULATE ( [Sales],PARALLELPERIOD ( 'Calendar'[Date],-1, YEAR ))

根据验证,呈现结果与DATEADD函数计算结果相同:

file


# **总结**

计算上年(同期)值,可使用如下几个函数:
DATEADD,PREVIOUSYEAR,SAMEPERIODLASTYEAR,PARRELLPERIOD。
以下几个表达式从今天的实验结果来看是等价的:

Sales_同期 =
CALCULATE ( [Sales],DATEADD ( ‘Calendar’[Date],-1, YEAR ))
Sales_SP =
CALCULATE ( [Sales],SAMEPERIODLASTYEAR ( ‘Calendar’[Date]) )
Sales_PP =
CALCULATE ( [Sales],PARALLELPERIOD ( ‘Calendar’[Date],-1, YEAR ))

以下表达式总是返回上年一整年的销售额:

Sales_PY =
CALCULATE ( [Sales],PREVIOUSYEAR ( ‘Calendar’[Date]) )

当选择的不是完整的月份而是一个日期段时,这些函数又会有怎么样的表现呢?敬请期待~

file


** PowerPivot工坊原创文章,转载请注明出处!*


如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习我们的“从Excel到Power BI数据分析可视化”系列课程。或者关注我们的公众号(PowerPivot工坊)后猛戳”在线学习”。


长按下方二维码关注“Power Pivot工坊”获取更多微软Power BI、PowerPivot相关文章、资讯,欢迎小伙伴儿们转发分享~

DAX函数——日期和时间函数 日期和时间函数 CALENDAR(<start_date>, <end_date>) 返回具有单列“Date”的表,该列包含一组连续日期。日期范围从指定的开始日期到指定的结束日期(这两个日期包含在内) CALENDARAUTO([fiscal_year_end_month])返回具有单列“Date”的表,该列包含一组连续日期。日期范围基于模型中的数据自动计算... 阅读详情

相关推荐

Power BI中的DAX基础知识

DAX简介 DAX数据分析表达式)是一种公式表达式语言,可用于不同的BI和可视化工具。 DAX也称为函数语言,其中完整代码保存在函数内。 DAX编程公式包含两种数据类型:数字和其他。 数字包括 - 整数,货币和小数,而其他包括:字符串和二进制对象。 以下是DAX公式的示例,该公式使用函数计算表中的列。 DAX函数还可以包括其他函数,条件语句和引用。 DAX功能 在Power BI中,...

张峰的博客 9244

DAX函数大全.xlsx

DAX函数大全,层级函数/格式函数/过滤函数/逻辑函数/其他函数/日期和时间函数/时间智能函数/数学与三角函数/统计函数/文字函数/信息函数

多种 DAX 方法计算 TOP1 的

涉及排名或做排行榜的时候,我们需要和No.1的做比较,来查看差距。比如业务员比较销售业绩的时候,将其他业务员的业绩与销售冠军进行比较;在市场占有率上,挑战者与主导者的市场份额比较;学分排名上,其他学员的成绩和第一名的成绩进行比较等等,需要确定TOP1的,接下来用多种方式计算TOP1的。 场景是房产销售业绩排行比较。销售表记录了销售员销售多种户型的销售额记录,新建一个销售员表与销售表的销售员...

PowerPivotShop的博客 1816

Power BI Dax 之时间智能函数

Power bi dax 时间智能函数

weixin_49539546的博客 4438

171_DAX 按照维度计算累计

1、类似的累计计算使用 DAX 窗口函数可以很好的计算。2、这类窗口函数的学习可以借鉴 Excel 中的单元格绝对和相对引用逻辑。

焦棚子的博客 930

7.3 PowerBI系列之DAX函数专题-时间智能-累计聚合、滚动聚合、移动平均

使用该函数可以按标准日期间隔(如日、月、季度或年)筛选表达式。number_of_intervals,一个整数,指定要添加到 dates 或从 dates 中减去的时间间隔数。该函数返回一个表,此表包含一列日期,日期以指定的开始日期开始,并按照指定的日期间隔一直持续到指定的数字。3.使用datesytd函数可以自定义自己公司的财年范围,不指定年结束日的情况,默认是从1月到12月。1.power bi中使用时间智能函数一定要有一个日期连续的日历辅助表calendarauto()dates,日期列。

qq_33842426的博客 3492

Excel Dax函数计算销售额市场份额

Excel dax函数创建度量计算销售额市场份额。

zrq88的博客 4866

Excel Dax函数计算销售额同比

在这里我们来展示如何在excel中使用Dax函数来计算销售额同比指标。考虑一个常见的业务场景:某零售商想要分析每月农夫山泉的包装水销售额同比指标。月度销售额同比 =(本月销售额-去年同月销售额)/ 去年同月销售额sales 数据表结构如下,每月各个省份各个渠道农夫山泉的销售额,每个月份对应多条销售数据。首先,我们先将sales数据通过CSV导入到PowerPivot模型中去。然后我们需要打开数据查询,检查下日期字段格式是否为日期。如下图所示,我们要确保biz_date日期字段的格式是日期,如果导入时是其他格

zrq88的博客 1649

Power BI使用视觉计算,轻松搞定复杂DAX

在窗口函数上,Relation参数无论是否在视觉计算中使用都可用,但如果在视觉计算中使用,则只接受Axis。对于许多视觉对象,第一个轴是ROWS,这意味着视觉计算在视觉矩阵中是逐行从上到下进行评估的。必须先将模型中的任何内容添加到视觉对象,然后视觉计算才能引用该视觉对象,从而释放视觉计算,使其与筛选器上下文和模型的复杂性相关。通过视觉计算,可以更轻松地创建以前难以创建的计算,从而简化 DAX、简化维护,带来更好的性能。在视觉计算编辑模式下,可以隐藏视觉对象的字段,就像在建模视图中隐藏列和表一样。

sinat_41448869的博客 1619

Power BI Dax 之聚合函数

Max/Sum/Average

weixin_49539546的博客 1555

大数据分析工具Power BI(七):DAX使用场景及常用函数

以上"表达式"参数是指对筛选后的数据进行计算的表达式,可以执行各种聚合计算,后续参数是一系列的筛选器,筛选器也可以为空,多个筛选器之间用逗号分割,多个筛选器都满足的数据集合才会被指定的表达式进行计算,并返回计算的结果。在数据分析中我们也经常遇到同比和环比的分析场景,同比和环比是两个不同的概念,同比是指相邻时间段某个相同的时间点的比较,例如:2021与2022年是两个相邻的年份(相邻时间段),2021年5月与2022年5月是这两个相邻时间段的相同时间点都是5月,比较这两个时间段的数据是同比。

Lansonli(蓝深李)的博客 2621

时间智能函数(DAX

时间智能函数(DAX)时间智能函数(DAX)TOTALMTD 函数PREVIOUSMONTH 函数DATEADD 函数时间智能类函数Bug的解决方案 时间智能函数(DAXDAX包括时间智能函数,这些时间智能函数通过使用时间段(包括日、月、季度和年)对数据进行操作,然后生成和比较针对这些时段的计算,支持商业智能分析的需要。要想时间智能函数使用更加灵活,主要需要解决下列三个问题: 参照依据(参考的是时间点还是时间段) 位移量(从参考的时间点/段往前/后移动多长的时间) 返回区间 涉及到时间智能函数的细节

qq_44684133的博客 3002

初学者,了解DAX-Day09

一身转战三千里,一剑可当百万师」,DAX 是一门强大的语言,它让没有任何 IT 背景的普通人借助 Excel 这样的平民工具就可以处理几百万、上千万行的数据;借助 DAX,普通业务人员对数据的分析能力将可以实现质的飞跃,还可以更容易的从 Excel 切换到 SSAS 这样的企业级 BI 工具。DAX 不是一门轻易就可以掌握的语言,需要学习它的理论,并通过做题来反复实践,在这个过程中你的认知会一次次的建立,又一次次被推翻,不要灰心,这是所有初学者的必经之路,你并不孤独。货币数据类型存储固定的十进制数。

qq_46544455的博客 1149

power BI学习笔记-DAX函数

Calculate函数 ALL函数 Divide函数 UserRelationship激活虚拟关系 Values函数 Var/Return

Admin_010的博客 4740

DAX如何计算工作日的天数

小伙伴们,好久不见哇~ 时常发现有小伙伴们在问这么一个问题:怎么计算日期与日期之间的工作日?今天就想和大家分享一个解决这个问题一个DAX小技巧。 准备 我们需要准备2个基础字段的sales表一个是订单日期和交货日期。 间隔天数 通常,我们可以通过简单的DAX函数就可以从一个减去另一个来计算两个日期之间的差异,生成两个日期之间间隔的天数。 ...

weixin_30418341的博客 1598

Power BI之常用DAX函数使用介绍——提供数据源练习

对于常用的几个dax函数进行了使用介绍,包括calculate,filter,all,values,hasonevalue,并附有数据源供大家练习

2302_80061155的博客 3421

dax 筛选 包含某个字_如何在DAX计算中隐藏未来日期?

翻译 | 叶婷 本文翻译自国际Power BI大师Marco Russo的文章——《Hiding future dates for calculations in DAX》,该文介绍了未来日期的定义以及展示度量时如何不显示未来日期的方法。我们经常会用到DAX时间智能函数,如year-to-date (YTD)、year-over-year (YOY)和其他一些函数,然而,日期表中因有“未来”日...

weixin_42459611的博客 637

【Power BI--- M 语言】M语言与DAX 语言的区别

M语言全称为Power Query Formula Language,是一种查询语言,适用于Excel中的Power Query,Get &amp; Transform(Excel 2016新功能)以及Power BI桌面版中。 M语言与DAX语言在使用上有两点明显的区别: 第一,M语言是一种脚本语言,与DAX这种表达式类语言在书写方面有着明显的区别。M语言更类似常用的JavaScript, ...

Babyfatliang的博客 8961
上一篇: DATESINPERIOD:计算过去某段时间的指标
下一篇: 理解 DAX 中的数据沿袭
PowerPivotWorks
博客等级 码龄7年 241粉丝 143原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值