暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

标准的时间智能计算

PowerBI最佳实践 2021-08-27
682

在这个模式中,我们将向您展示如何使用标准日历计算与时间相关的计算,如年初至今、去年同期和百分比增长。使用标准日历的最大优点是:您可以依赖多个内置的时间智能函数。内置函数的设计方式为最常见的需求提供正确的结果。

如果内置函数无法满足您的需求,或者你正在使用一个非标准的日历,那么您应该使用常规的(与时间无关的)DAX函数来达到相同的目标。通过这种方式,您可以随意定制代码的结果。也就是说,如果您需要自定义计算,那么还需要使用一组列来丰富您的日期表,这些列将被DAX公式用于移动筛选器。这些自定义计算将在自定义时间相关计算模式中进行介绍。

如果您使用的是常规的公历,那么此模式中的公式是产生时间智能计算的最简单和最有效的方法。请记住,标准的DAX时间智能函数只支持常规的公历——即一年由12月组成,每个月包含它的公历天数(28~31天),三个月组成一个季度,以及我们所习惯的日历的所有常规方面

介绍时间智能计算

为了使用任何时间智能计算,您需要一个格式良好的日期表。日期表必须满足以下要求:

  • 包含所需年份的所有日期。日期表必须从1月1日开始,到12月31日结束,并包含这个范围内的所有天数。如果报告只引用财年,那么日期表必须包括从财年的第一天到最后一天的所有日期。例如:如果2008财年从2007年7月1日开始,那么日期表必须包含从2007年7月1日到2008年6月30日的所有天数。

  • 需要有一个具有DateTime或Date数据类型并且包含唯一值的列通常这一列命名为Date。尽管Date列经常用于定义与其他表的关系,但这不是必需的。尽管如此,Date列必须包含唯一的值,并且应该由“标记为日期表”特性引用。如果该列还包含时间部分,则不应该使用时间—例如,时间应该始终是12:00 am。

  • Date表必须在模型中标记为日期表,以防Date表和其他表之间的关系(如我们的例子中的Sales)不是基于日期列。

有几种方法可以构建Date表。只要日期表满足以上要求,构建Date表的方式并不影响使用标准时间智能计算的方式。如果您已经有一个适用于您的报告的Date表,只需导入它并在检查它满足最低要求之后将其标记为日期表。如果没有Date表,可以使用后面描述的DAX计算表创建一个。

最佳实践是: 将用于时间智能计算的Date表标记为日期表。每次筛选器应用于Date列时,“标记为日期表”特性都会在日期表上添加一个REMOVEFILTERS调节器。此操作(对Date列应用筛选器)由CALCULATE中使用的所有时间智能函数执行。如果您使用Date列定义Sales和Date之间的关系,DAX将实现相同的行为。然而,将“标记为日期表”设置应用于日期表是一个最佳实践。如果有多个日期表,可以将所有日期表标记为日期表。

如果不使用“标记为日期表”设置,并且没有使用日期列定义关系,那么每当在CALCULATE中使用时间智能函数时,都必须在日期表上添加REMOVEFILTERS。这一行为在Power BI Desktop中的时间智能一文中有更详细的描述(https://www.sqlbi.com/articles/time-intelligence-in-power-bi-desktop/)。



文章转载自PowerBI最佳实践,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论