了解数据表
数据分析涉及浏览一段时间内的数据并跨时间段进行计算。例如,您可能需要将当前年度的利润与前一年的利润进行比较。同样,您可能必须预测未来几年的增长和利润。为此,您需要在一段时间内使用分组和聚合。
DAX 提供了几个时间智能函数,可帮助您执行大多数此类计算。但是,这些 DAX 函数需要日期表才能与数据模型中的其他表一起使用。
您可以从数据源导入日期表以及其他数据,也可以在数据模型中自己创建日期表。
在本章中,您将了解日期表的不同方面。如果您熟悉 Power Pivot 数据模型中的日期表,则可以跳过本章并继续阅读后续章节。否则,您可以理解 Power Pivot 数据模型中的日期表。
什么是日期表?
日期表是数据模型中的表,至少有一列连续日期,跨越所需的持续时间。它可以有其他列代表不同的时间段。但是,DAX 时间智能函数要求连续日期列。
例如,
日期表可以包含日期、会计月份、会计季度和会计年度等列。
日期表可以包含日期、月份、季度和年份等列。
具有连续日期的日期表
假设您需要在日历年范围内进行计算。然后,日期表必须至少有一列包含连续日期,包括该特定日历年的所有日期。
例如,假设您要浏览的数据的日期范围为 2014 年 4 月 1 日至 2016 年 11 月 30 日。
如果您必须报告日历年,则需要一个日期表,其中包含日期列,其中包含从 2014 年 1 月 1 日至 2016 年 12 月 31 日的所有日期。
如果您必须报告财政年度,并且财政年度结束时间为 6 月 30 日,则需要一个日期表,其中包含日期列,其中包含从 2013 年 7 月 1 日至 2016 年 6 月的所有日期2017 年 30日 依次排列。
如果您必须同时报告日历年度和财政年度,那么您可以拥有一个涵盖所需日期范围的日期表。
您的日期表必须包含给定持续时间内每年范围内的所有日期。因此,您将在该时间段内获得连续的日期。
如果您定期用新数据刷新数据,则结束日期将延长一年或两年,这样您就不必经常更新日期表。
日期表如以下屏幕截图所示。

将日期表添加到数据模型
您可以通过以下任何一种方式将日期表添加到数据模型 −
从关系数据库或任何其他数据源导入。
在 Excel 中创建日期表,然后复制或链接到 Power Pivot 中的新表。
从 Microsoft 导入Azure 市场。
在 Excel 中创建日期表并复制到数据模型
在 Excel 中创建日期表并复制到数据模型是在数据模型中创建数据表的最简单、最灵活的方法。
在 Excel 中打开一个新工作表。
在列的第一行中输入日期。
在同一列的第二行中输入要创建的日期范围中的第一个日期。
选择单元格,单击填充柄并将其向下拖动以在所需的日期范围内创建一列连续的日期。
例如,输入 1/1/2014,单击填充柄并向下拖动以填充连续日期,直至 31/12/2016。
- 单击日期列。
- 单击功能区上的"插入"选项卡。
- 单击表格。
- 验证表格范围。
- 单击确定。
Excel 中单列日期的表格已准备就绪。

- 选择表格。
- 单击功能区上的"复制"。
- 单击 Power Pivot窗口。
- 单击功能区上的"粘贴"。

这会将剪贴板的内容添加到数据模型中的新表中。因此,您也可以使用相同的方法在现有数据模型中创建日期表。
出现粘贴预览对话框,如以下屏幕截图所示。
- 在表名称框中键入日期。
- 预览数据。

- 选中复选框 – 使用第一行作为列标题。
- 单击确定。
这会将剪贴板的内容复制到数据模型中的新表中。
现在,数据模型中有一个日期表,其中包含一列连续的日期。列的标题是您在 Excel 表中给出的日期。
向日期表添加新的日期列
接下来,您可以根据计算要求向日期表添加计算列。
例如,您可以添加列 - 日、月、年和季度,如下所示 −
- 日
=DAY('Date'[Date])
- 月
=MONTH('Date'[Date])
- 年
=YEAR('Date'[Date])
- 季度
=CONCATENATE ("QTR ", INT (('Date'[Month]+2)/3))
数据模型中生成的日期表如以下屏幕截图所示。

因此,您可以向日期表添加任意数量的计算列。重要且必需的是,日期表必须有一个连续日期列,该列跨越您执行计算的时间段。
为日历年创建日期表
日历年通常包括从 1 月 1 日到 12 月 31 日的日期,还包括该特定年份的假期。执行计算时,您可能只需考虑工作日,不包括周末和假期。
假设,您想为 2017 日历年创建一个日期表。
创建一个 Excel 表格,其中包含日期列,该表格包含从 2017 年 1 月 1 日到 2017 年 12 月 31 日的连续日期。(请参阅上一节以了解如何执行此操作。)
复制 Excel 表格并将其粘贴到数据模型中的新表格中。 (请参阅上一节以了解如何执行此操作。)
将表命名为日历。
添加以下计算列 −
日 =DAY('Calendar'[Date])
月 =MONTH('Calendar'[Date])
年 =YEAR('Calendar'[Date])
星期几 =FORMAT('Calendar'[Date],"DDD")
月份名称 =FORMAT('Calendar'[Date],"MMM")

将节假日添加到日历表
按如下方式将节假日添加到日历表 −
获取该年已声明的节假日列表。
例如,对于美国,您可以从以下链接http://www.calendar-365.com/获取任何所需年份的节假日列表。
将其复制并粘贴到 Excel 工作表中。
复制 Excel 表并将其粘贴到数据中的新表中模型。
将表命名为 Holidays。

接下来,您可以使用 DAX LOOKUPVALUE 函数将假日计算列添加到日历表。
=LOOKUPVALUE(Holidays[Holiday],Holidays[Date],'Calendar'[Date])
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(('Calendar'[Fiscal Month]+2)/3)

设置日期表属性
当您使用 DAX 时间智能函数(例如 TOTALYTD)时, PREVIOUSMONTH 和 DATESBETWEEN,它们需要元数据才能正常工作。日期表属性设置此类元数据。
要设置日期表属性 −
- 在 Power Pivot 窗口中选择"日历"表。
- 单击功能区上的"设计"选项卡。
- 单击"日历"组中的"标记为日期表"。
- 单击下拉列表中的"标记为日期表"。

出现"标记为日期表"对话框。选择"日历"表中的"日期"列。这必须是日期数据类型的列,并且必须具有唯一值。单击"确定"。
