📅  最后修改于: 2020-12-01 08:50:38             🧑  作者: Mango
数据分析涉及随时间浏览数据并跨时间段进行计算。例如,您可能必须将当年的利润与上一年的利润进行比较。同样,您可能必须预测未来几年的增长和利润。对于这些,您需要在一段时间内使用分组和聚合。
DAX提供了一些时间智能功能,可以帮助您执行大多数此类计算。但是,这些DAX函数需要日期表才能与数据模型中的其他表一起使用。
您可以将日期表与来自数据源的其他数据一起导入,也可以在数据模型中自行创建日期表。
在本章中,您将了解日期表的不同方面。如果您熟悉Power Pivot数据模型中的“日期”表,则可以跳过本章并继续进行后续章节。否则,您可以了解Power Pivot数据模型中的“日期”表。
日期表是数据模型中的表,在所需的持续时间内至少有一列连续的日期。它可以具有代表不同时间段的其他列。但是,根据DAX时间智能功能的需要,必须是连续日期的列。
例如,
日期表可以包含诸如日期,会计月份,会计季度和会计年度之类的列。
日期表可以包含日期,月份,季度和年份等列。
假设您需要在一个日历年的范围内进行计算。然后,“日期”表必须至少具有一列带有一组连续日期的列,包括该特定日历年中的所有日期。
例如,假设来浏览你想要的数据必须通过11月30日日,2016年2014年4月1日的日期。
如果必须报告一个日历年,则需要一个带有“日期”列的日期表,该表按顺序包含从2014年1月1日到2016年12月31日的所有日期。
如果你要报告上财年,和你的财年年底是6月30日,你需要一个日期表列-日期,它包含了所有从7月1日,2013年日至6月30日,2017年在顺序。
如果必须同时报告日历年和会计年度,则可以有一个跨越所需日期范围的单个“日期”表。
您的日期表必须包含给定期限内每年范围内的所有日期。因此,您将在该时间段内获得连续的日期。
如果您定期用新数据刷新数据,则结束日期将延长一两年,这样您就不必经常更新日期表。
日期表如下图所示。
您可以通过以下任意一种方式将Date表添加到数据模型-
从关系数据库或任何其他数据源导入。
在Excel中创建日期表,然后在Power Pivot中复制或链接到新表。
从Microsoft Azure市场导入。
在Excel中创建日期表并将其复制到数据模型是在数据模型中创建数据表的最简单,最灵活的方法。
在Excel中打开一个新的工作表。
类型–列第一行中的日期。
在同一列的第二行中,键入要创建的日期范围内的第一个日期。
选择该单元格,单击填充手柄并将其向下拖动以在所需日期范围内创建一列连续日期。
例如,键入2014年1月1日,单击填充手柄并向下拖动以填充到2016年12月31日为止的连续日期。
日期的单列表格已在Excel中准备好。
这会将剪贴板的内容添加到数据模型中的新表中。因此,您也可以使用相同的方法在现有数据模型中创建日期表。
出现“粘贴预览”对话框,如以下屏幕截图所示。
这会将剪贴板的内容复制到数据模型中的新表中。
现在,数据模型中有一个Date表,其中包含一列连续的日期。列的标题是Excel表中给定的日期。
接下来,您可以根据计算要求将计算列添加到“日期”表中。
例如,您可以添加列–日,月,年和季度,如下所示:
= DAY(’Date'[Date])
= MONTH(’Date'[Date])
= YEAR(’Date'[Date])
= CONCATENATE(“ QTR”,INT((’Date'[Month] +2)/ 3))
数据模型中生成的日期表如下图所示。
因此,您可以将任意数量的计算列添加到“日期”表中。重要且必需的是,“日期”表必须具有一列连续的日期,该日期跨越执行计算的持续时间。
日历年通常包括一年中从1月1日到12月31日的日期,还包括该特定年份的假日。在执行计算时,您可能只需要考虑工作日,不包括周末和节假日。
假设您要为2017日历年创建一个Date表。
与列日期创建一个Excel表格,由连续的日期从1月1日到2017年12月31日2017年(参见上一节知道如何做到这一点。)
复制Excel表并将其粘贴到数据模型中的新表中。 (请参阅上一节以了解如何执行此操作。)
将该表命名为Calendar。
添加以下计算列-
天= DAY(’日历'[日期])
月= MONTH(’日历'[日期])
年= YEAR(’日历'[日期])
星期几= FORMAT(’日历'[日期],“ DDD”)
月名= FORMAT(’日历'[日期],“ MMM”)
将假期添加到日历表,如下所示:
获取当年宣布的假期列表。
例如,对于美国,您可以从以下链接http://www.calendar-365.com/获取任何所需年份的假期列表。
将它们复制并粘贴到Excel工作表中。
复制Excel表并将其粘贴到数据模型中的新表中。
将该表命名为Holidays。
接下来,您可以使用DAX LOOKUPVALUE函数将计算出的假日列添加到Calendar表中。
= LOOKUPVALUE(假期[假期],假期[日期],’日历'[日期])
DAX LOOKUPVALUE函数在第二个参数(即Holidays [Date])中搜索第三个参数,即Calendar [Date],如果存在匹配项,则返回第一个参数,即Holidays [Holiday]。结果看起来像下面的屏幕快照所示。
会计年度通常包括从本月1日的财年结束到下一个财政年度结束后的日期。例如,如果会计年度结束日期为3月31日,则会计年度的范围为4月1日至3月31日。
您可以使用DAX公式在日历表中包括财务时间段-
为FYE添加度量
FYE:= 3
添加以下计算列-
财政年度
= IF(’Calendar'[Month] <=’Calendar'[FYE],’Calendar'[Year],’Calendar'[Year] +1)
财政月
= IF(’Calendar'[Month] <=’Calendar'[FYE],12-‘Calendar'[FYE] +’Calendar'[Month],’Calendar'[Month]-‘Calendar'[FYE])
财政季度
= INT((’日历'[财政月] +2)/ 3)
当您使用DAX时间智能功能(例如TOTALYTD,PREVIOUSMONTH和DATESBETWEEN)时,它们需要元数据才能正常工作。日期表属性设置此类元数据。
设置日期表属性-
出现标记为日期表对话框。在日历表中选择日期列。这必须是“日期”数据类型的列,并且必须具有唯一的值。单击确定。