Power BI 微课堂 | 第22课:在模型中应用自动日期/时间

published: 2023-12-26

今天,我们开始学习:在模型中应用自动日期/时间,了解如何在 Power BI Desktop 中启用时间智能选项,从而高效筛选、分组和向下钻取日历时间段。


》自动日期/时间选项简介

在 Power BI Desktop 中,“自动日期/时间”是一个数据加载选项。此选项用于实现基于模型中所加载日期列的时间智能报告。具体而言,它可让报表作者无需开发,即可直接使用日历时间段(年份、季度、月份和天数),从而使用数据模型进行筛选、分组和向下钻取。

启用该选项后,如果满足以下三个条件,Power BI Desktop 就会为每个日期列创建隐藏的自动日期/时间表:

  • 表存储模式为“导入”

  • 列数据类型为“日期”或“日期/时间”

  • 列不是模型关系中的“多”方


》自动日期/时间的工作原理

实际上,每个自动日期/时间表都是使用 DAX CALENDAR 函数生成数据行的计算表。每个表包含六个计算列:Day、MonthNo、Month、QuarterNo、Quarter 和 Year。

需要说明的是,Power BI 按模型语言对列名称和值进行转换和格式化。例如,如果模型是使用中文创建的,则即使使用外国客户端进行查看,它仍将以中文显示月份名称等。

Power BI Desktop 还会创建自动日期/时间表的“Date”列与模型日期列的关系。“自动日期/时间”表中包含模型日期列中存储的所有日期值的的全部日历年份。

例如,如果日期列中最早的值是 2016 年 3 月 20 日,最新值是 2019 年 10月 23 日,则表将包含 1461 行。2016 到 2019 这四个日历年的每个日期对应一行。当 Power BI 刷新模型时,也会刷新每个自动日期/时间表。这样一来,模型就能始终包括包含了日期列值的日期。

如果可以查看自动日期/时间表的行,它们将如以下图中的示例所示。该示例显示了 7 列,其中包含 2019 年 1 月 1 日至 2019 年 1 月 10 日的 10 个数据行。

需要说明的是:如果设置了永久隐藏自动日期/时间表,就连建模人员也不会看到。这类表不会出现在“字段”窗格或“模型”视图的关系图中,表中的行也不会出现在“数据”视图中。此外,DAX 表达式也无法直接引用表及其列。而且,使用在 Excel 中分析或通过使用 Power BI 以外的报表设计器连接到模型时,不能使用它们。

此外,自动日期/时间表还定义了层次结构,为视觉对象提供年份、季度、月份和日期级别的向下钻取路径。如果可以在“模型”视图的关系图中查看自动日期/时间表,它可能会如以下图所示:

可以看到,Sales 表的 OrderDate 列和 LocalDateTime 表的 Date 使这两个表相关。其中,LocalDateTime 表定义了 7 列:Date、Day、Month、MonthNo、Quarter、QuarterNo、Year,具有单一层次结构。层次结构名为“日期层次结构”,由四个级别组成:年份、季度、月份和日期。


》使用自动日期/时间

存在包含(可见)日期列的自动日期/时间表时,报表作者不会看到该列显示为“字段”窗格中的字段。但会看到与日期列同名的可扩展对象,由于它带有日历图标,因此可以轻松识别。

当报表作者展开日历对象时,会看到名为“日期层次结构”的层次结构。展开层次结构后,会看到以下四个级别:年份、季度、月份和日期 。

如图所示,它包含带有日历图标的 OrderDate 字段,并包含名为“日期层次结构”且展开的层次结构。在日期层次结构中,包含四个级别:年份、季度、月份和日期。

这样,你就可使用自动日期/时间生成的层次结构配置视觉对象,其方式与使用普通层次结构的方式完全相同。

需要注意的是,有一个情况不受普通层次结构的支持:将自动日期/时间层次结构(或层次结构的级别)添加到视觉对象时,报表作者可以在使用层次结构或日期列之间进行切换。如果某些视觉对象只需要日期列而不是层次结构和级别,则这种方法非常有意义。

首先,配置视觉对象字段(右键单击视觉对象字段,或选择向下箭头),然后通过使用上下文菜单在日期列或日期层次结构之间切换。

如图所示,打开的上下文菜单会显示两个选项,点击这两个选项可以使用“OrderDate”列或“日期”层次结构。

最后,使用 DAX 编写的模型计算可以“直接”引用日期列,也可以“间接”引用隐藏的自动日期/时间表列 。

使用 Power BI Desktop 编写的公式可以按常规方式引用日期列。但必须使用特定扩展语法引用自动日期/时间表列。

首先,引用日期列,然后在其后添加句点 (.)。然后,可通过公式栏自动完成从自动日期/时间表中选择列。

请注意:虽然上述度量值表达式在 Power BI Desktop 中有效,但它不是正确的 DAX 语法。Power BI Desktop 在内部将表达式转置以引用真实的(隐藏)自动日期/时间表列。


》配置自动日期/时间选项

用户可以全局或为当前文件配置自动日期/时间选项。全局选项适用于新的 Power BI Desktop 文件,且可随时开启或关闭;如果是新安装的 Power BI Desktop,则两个选项都默认开启。

同样,当前文件选项也可以随时开启或关闭。开启后,将创建自动日期/时间表。关闭后,将从模型中删除任何自动日期/时间表。

请注意:由于关闭当前文件选项会删除自动日期/时间表,因此请务必小心。务必修复任何已配置为使用这些选项的已损坏报表筛选器或视觉对象。

在 Power BI Desktop 中,选择“文件”>“选项和设置”>“选项”,然后选择“全局”或“当前文件”页。在任一页上,都可在“时间智能”部分中找到该选项。


》使用建议

在使用过程中,建议仅在使用日历时间段时,或对时间模型要求比较简单时,才启用“自动日期/时间”选项。此外,在创建临时模型或执行数据浏览或分析时,使用此选项也很方便。

如果你的数据源已定义日期维度表,则可使用此表来一致地定义企业中的时间数据。如果你的数据源是数据仓库,肯定会是这种情况。

否则,可用 DAX CALENDAR 或 CALENDARAUTO 函数在模型中生成日期表。然后,可以添加计算列来支持已知的时间筛选和分组要求。

使用这种设计方法,可以创建一个可传播到所有事实类型表的单一日期表,这可能会生成一个表来应用时间筛选器。


如你所见,“自动日期/时间”选项提供了方便、快捷且易于使用的时间智能,因此报表作者可以在筛选、分组和向下钻取日历时间段时使用时间智能来提高效率。



以上就是关于「在模型中应用自动日期/时间」的全部内容。感谢您的耐心阅读,更多 Power BI 学习资源,请持续关注优阅达大数据生态。