了解数据表


数据分析涉及随时间浏览数据并跨时间段进行计算。例如,你可能需要将当年的利润与上一年的利润进行比较。同样,你可能必须预测未来几年的增长和利润。对于这些,你需要在一段时间内使用分组和聚合。

DAX 提供了多个时间智能函数,可帮助你执行大多数此类计算。但是,这些 DAX 函数需要一个日期表才能与数据模型中的其他表一起使用。

你可以从数据源导入日期表和其他数据,也可以在数据模型中自己创建日期表。

在本章中,你将了解日期表的不同方面。如果你熟悉 Power Pivot 数据模型中的日期表,则可以跳过本章并继续阅读后续章节。否则,你可以了解 Power Pivot 数据模型中的日期表。

什么是日期表?


日期表是数据模型中的一个表,在所需的持续时间内至少有一列连续的日期。它可以有代表不同时间段的附加列。但是,DAX 时间智能功能需要的是连续日期列。

例如,

  • 日期表可以包含日期、会计月份、会计季度和会计年度等列。

  • 日期表可以包含日期、月份、季度和年份等列。

Date Table with Contiguous Dates


假设你需要在一个日历年的范围内进行计算。然后,Date 表必须至少有一个包含一组连续日期的列,包括该特定日历年中的所有日期。

例如,假设你要浏览的数据的日期为 2014 年 4 月 1 日至 11 月 30 日 th , 2016.

  • 如果你必须报告一个日历年,你需要一个带有一列的日期表 - 日期,其中包含从 1 月 1 日开始的所有日期 st , 2014 年至 12 月 31 日 st , 2016 年的序列。

  • 如果你必须报告一个会计年度,并且你的会计年度结束日期是 30 th 六月,你需要一个日期表,其中包含一列 - 日期,其中包含 7 月 1 日以来的所有日期 st , 2013 年至 6 月 30 日 th , 2017 年。

  • 如果你必须同时报告日历年度和会计年度,那么你可以拥有一个跨越所需日期范围的日期表。

你的日期表必须包含给定持续时间内每年范围内的所有天数。因此,你将在该时间段内获得连续的日期。

如果你定期用新数据刷新数据,则结束日期将延长一两年,这样你就不必经常更新 Date 表。

日期表类似于以下屏幕截图。

Data Table

将日期表添加到数据模型


你可以通过以下任一方式将 Date 表添加到数据模型中:

  • 从关系数据库或任何其他数据源导入。

  • 在 Excel 中创建日期表,然后在 Power Pivot 中复制或链接到新表。

  • 从 Microsoft Azure 市场导入。

在 Excel 中创建日期表并复制到数据模型


在 Excel 中创建日期表并复制到数据模型是在数据模型中创建数据表的最简单、最灵活的方法。

  • 在 Excel 中打开一个新工作表。

  • 类型 - 列第一行中的日期。

  • 在同一列的第二行中键入要创建的日期范围中的第一个日期。

  • 选择单元格,单击填充柄并将其向下拖动以在所需日期范围内创建一列连续日期。

例如,键入 2014 年 1 月 1 日,单击填充柄并向下拖动以填充 2016 年 12 月 31 日之前的连续日期。

  • 单击日期列。
  • 单击功能区上的插入选项卡。
  • 单击表。
  • 验证表格范围。
  • 单击确定。

Excel 中已准备好包含单列日期的表格。

Single Column of Dates
  • 选择表。
  • 单击功能区上的复制。
  • 单击 Power Pivot 窗口。
  • 单击功能区上的粘贴。
Paste

这会将剪贴板的内容添加到数据模型中的新表中。因此,你也可以使用相同的方法在现有数据模型中创建日期表。

出现粘贴预览对话框,如以下屏幕截图所示。

  • 在表名称框中键入日期。
  • 预览数据。
Paste Preview
  • 选中该框 - 使用第一行作为列标题。
  • 单击确定。

这会将剪贴板的内容复制到数据模型中的新表中。

现在,你在数据模型中有一个 Date 表,其中包含一列连续的日期。该列的标题是你在 Excel 表中给出的日期。

向日期表中添加新日期列


接下来,你可以根据计算要求将计算列添加到日期表中。

例如,你可以添加列 - 日、月、年和季度,如下所示:

  • Day

    =DAY('日期'[日期])

  • Month

    =MONTH('日期'[日期])

  • Year

    =YEAR('日期'[日期])

  • Quarter

    =CONCATENATE ("QTR", INT (('Date'[Month]+2)/3))

数据模型中生成的日期表类似于以下屏幕截图。

Resulting Date table

因此,你可以将任意数量的计算列添加到日期表中。重要且必需的是,日期表必须有一列连续日期,跨越你执行计算的持续时间。

为日历年创建日期表


日历年通常包括从一年的 1 月 1 日到 12 月 31 日的日期,还包括为该特定年份标记的假期。执行计算时,你可能只需要考虑工作日,不包括周末和节假日。

假设你要为日历年 2017 创建一个日期表。

  • 创建一个包含日期列的 Excel 表,其中包含从 1 开始的连续日期 st 2017 年 1 月至 31 日 st 2017 年 12 月。(请参阅上一节以了解如何执行此操作。)

  • 复制 Excel 表并将其粘贴到数据模型中的新表中。 (请参阅上一节以了解如何执行此操作。)

  • 将表命名为日历。

  • 添加以下计算列:

    • 天 =DAY('日历'[日期])

    • 月 =MONTH('日历'[日期])

    • 年 =YEAR('日历'[日期])

    • 星期几 =FORMAT('日历'[日期],"DDD")

    • 月份名称 =FORMAT('日历'[日期],"MMM")

Adding Calculated Columns

将假期添加到日历表


在日历表中添加假期如下:

  • 获取当年宣布的假期列表。

  • 例如,对于美国,你可以从以下链接获取任何所需年份的假期列表 http://www.calendar-365.com/ .

  • 将它们复制并粘贴到 Excel 工作表中。

  • 复制 Excel 表并将其粘贴到数据模型中的新表中。

  • 将表命名为假期。

Name Table Holidays
  • 接下来,你可以使用 DAX LOOKUPVALUE 函数将计算出的假期列添加到日历表中。

=LOOKUPVALUE(假期[假期],假期[日期],'日历'[日期])

DAX LOOKUPVALUE 函数在第二个参数即Holidays[Date] 中搜索第三个参数即Calendar[Date],如果匹配则返回第一个参数即Holidays[Holiday]。结果将如下面的屏幕截图所示。

Lookupvalue

向会计年度添加列


一个会计年度通常包括从 1 开始的日期 st 财政年度结束后的一个月到下一个财政年度结束。例如,如果会计年度结束日期是 31 st 三月,然后财政年度范围从 1 st 4月至31日 st March.

你可以使用 DAX 公式在日历表中包含会计时间段:

  • 为 FYE 添加度量

    FYE:=3

  • 添加以下计算列:

    • 财政年度

      =IF('日历'[月]<='日历'[FYE],'日历'[年],'日历'[年]+1)

    • 财政月

      =IF('日历'[月]<='日历'[FYE],12-'日历'[FYE]+'日历'[月],'日历'[月]-'日历'[FYE] )

    • 财政季度

      =INT(('日历'[会计月份]+2)/3)

Adding Columns to Fiscal Year

设置日期表属性


当你使用 TOTALYTD、PREVIOUSMONTH 和 DATESBETWEEN 等 DAX 时间智能函数时,它们需要元数据才能正常工作。日期表属性设置此类元数据。

设置日期表属性:

  • 在 Power Pivot 窗口中选择日历表。
  • 单击功能区上的设计选项卡。
  • 单击日历组中的标记为日期表。
  • 单击下拉列表中的标记为日期表。
Setting the Date Table Property

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

Mark as Date Table