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