内容:

ISO-8601 基于周的日历

  • 版本 :2022.1 及更高版本

适用于: Tableau Desktop, Tableau Public

ISO-8601 基于周的日历是适用于日期相关数据的一项国际标准。ISO-8601 日历的目的是提供一致且清晰的方法来表示和计算日期。ISO-8601 日历将日期划分为“年”、“季度”、“周”和“平日”。与公历不同,ISO-8601 日历在每个季度中有一致的周数,每周有一致的天数,从而使 ISO-8601 日历在计算零售和财务日期时很受欢迎。

将 ISO-8601 设置为默认日历

若要为数据源设置 ISO 8601 日历,请按以下步骤进行操作:

  1. 右键单击(在 Mac 上按住 Control 单击)“数据”窗格中的数据源以打开“日期属性”对话框。

  2. “默认日历”字段更改为“ISO-8601 基于周”。

对于功能区上的每个日期字段,您可以单独设置日历类型。在功能区中,右键单击(在 Mac 上按住 Ctrl 单击)某个日期维度,并选择“ISO-8601 基于周”

使用会计日历是否会影响给定日期维度级别视具体情况而定。

公历日期级别ISO-8601 日期级别ISO-8601 日历和标准公历的区别
ISOYEARISO-8601 年始终从最接近 1 月 1 日的第一个星期一开始。这可能意味着,在某些情况下年要到 1 月 4 日才会开始,在另一些情况下可能在 12 月底就会开始。公历的年始终在 1 月 1 日开始。这可能会导致两个日历系统的年在非常接近 1 月初时会出现一些差异。
季度ISOQUARTER

ISO-8601 中的前三个季度始终有 13 周,最后一个季度有 13 或 14 周,具体取决于下一个 ISO-8601 年的开头。


ISO-8601 基于周的日历不使用“月”。许多零售和财务系统将 ISO-8601 季度划分为三个 4-4-5 周的分段,但也存在其他分段系统。
周数ISOWEEK

ISO-8601 基于周的日历中的所有周都恰好有 7 天,从星期一开始,并且每周都在一年中。与公历不同的是,不会有跨年的周。每个 ISO-8601 年都是一个长年或短年,包含 52 周或 53 周,具体取决于 ISO-8601 年的开始时间。


ISO-8601 基于周的日历不使用“日”。
平日ISOWEEKDAYISO-8601 平日始终在星期一开始。

支持 ISO-8601 的日期函数

当日期维度使用 ISO-8601 基于周的日历时,只有以下日期函数将反映 ISO-8601 基于周的日历。

DATEADD 和 DATEDIFF

如果使用非 ISO-8601 日期值(例如 day month)调用 DATEADD 和 DATEDIFF 计算,则生成的字段会将 ISO-8601 日期截断到最接近的 ISO 级别。例如,将 ISO-8601 日期增加一个月会反映在 iso-week 变化中。

DATENAME

使用 DATENAME 时,生成的计算将返回公历日期,除非您使用 iso-yeariso-quarteriso-weekiso-weekday 日期部分。

DATEPART

使用 DATEPART 时,生成的计算将返回公历日期,除非您使用 iso-yeariso-quarteriso-weekiso-weekday 日期部分。

DATETRUNC

DATETRUN 计算会将 ISO-8601 日期截断到最接近的 ISO 级别。例如,如下图所示,即使 ISO-8601 不使用“月”,在“月”级别截断 ISO 日期将显示公历月份的第一个 iso-week

使用 ISO-8601 日期函数创建 4-4-5 日历

ISO-8601 基于周的日历不使用“月”。许多零售和财务系统将 ISO-8601 季度划分为三个 4-4-5 周的分段,但也存在其他分段系统。

按照以下步骤操作,了解如何在 Tableau Desktop 中实现 4-4-5 日历。

步骤 1:设置可视化项

  1. 打开 Tableau Desktop 并连接到“Sample - Superstore”已保存数据源。

  2. 将 ISO-8601 设置为默认日历

  3. 导航到新工作表。

  4. “数据”窗格中的“维度”下,将“Order Date”(订单日期)拖到“行”功能区。

  5. 在“行”功能区上,单击“ISOYEAR(Order Date)”上的“+”图标。

    “ISOQUARTER(Order Date)”将添加到功能区。

  6. “数据”窗格中的“度量”下,将“Sales”(销售额)拖到“列”功能区。

步骤 2:查找每个季度中的周数

在 4-4-5 分段日历中,每个季度分为其中包含 4 周或 5 周的 3 个分段。我们必须了解每个季度中有多少周才能将它们分段。

  1. 选择“分析”>“创建计算字段”。

  2. 将计算字段命名为“Weeks in Quarter”(季度中的周数)

  3. 在计算对话框中输入以下计算

    DATEPART('iso-quarter', [Order Date])*13 - DATEPART('iso-week', [Order Date])

步骤 3:创建 4-4-5 日历计算

  1. 选择“分析”>“创建计算字段”。

  2. 将计算字段命名为“4-4-5 Segment”(4-4-5 分段)

  3. 在计算对话框中输入以下计算

    IF([Weeks in Quarter] > 8) THEN "1" ELSEIF ([Weeks in Quarter] > 4) THEN "2" ELSE "3" END

  4. 从“数据”窗格中,将“4-4-5 Segment”(4-4-5 分段)计算字段拖到“行”功能区。