ISO-8601 基于周的日历是适用于日期相关数据的一项国际标准。ISO-8601 日历的目的是提供一致且清晰的方法来表示和计算日期。ISO-8601 日历将日期划分为“年”、“季度”、“周”和“平日”。与公历不同,ISO-8601 日历在每个季度中有一致的周数,每周有一致的天数,从而使 ISO-8601 日历在计算零售和财务日期时很受欢迎。
将 ISO-8601 设置为默认日历
若要为数据源设置 ISO 8601 日历,请按以下步骤进行操作:
右键单击(在 Mac 上按住 Control 单击)“数据”窗格中的数据源以打开“日期属性”对话框。
将“默认日历”字段更改为“ISO-8601 基于周”。
对于功能区上的每个日期字段,您可以单独设置日历类型。在功能区中,右键单击(在 Mac 上按住 Ctrl 单击)某个日期维度,并选择“ISO-8601 基于周”。
使用会计日历是否会影响给定日期维度级别视具体情况而定。
公历日期级别 | ISO-8601 日期级别 | ISO-8601 日历和标准公历的区别 |
---|---|---|
年 | ISOYEAR | ISO-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 基于周的日历不使用“日”。 | |
平日 | ISOWEEKDAY | ISO-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-year
、iso-quarter
、iso-week
或 iso-weekday
日期部分。
DATEPART
使用 DATEPART 时,生成的计算将返回公历日期,除非您使用 iso-year
、iso-quarter
、iso-week
或 iso-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:设置可视化项
打开 Tableau Desktop 并连接到“Sample - Superstore”已保存数据源。
导航到新工作表。
从“数据”窗格中的“维度”下,将“Order Date”(订单日期)拖到“行”功能区。
在“行”功能区上,单击“ISOYEAR(Order Date)”上的“+”图标。
“ISOQUARTER(Order Date)”将添加到功能区。
- 从“数据”窗格中的“度量”下,将“Sales”(销售额)拖到“列”功能区。
步骤 2:查找每个季度中的周数
在 4-4-5 分段日历中,每个季度分为其中包含 4 周或 5 周的 3 个分段。我们必须了解每个季度中有多少周才能将它们分段。
选择“分析”>“创建计算字段”。
将计算字段命名为“Weeks in Quarter”(季度中的周数)
在计算对话框中输入以下计算
DATEPART('iso-quarter', [Order Date])*13 - DATEPART('iso-week', [Order Date])
步骤 3:创建 4-4-5 日历计算
选择“分析”>“创建计算字段”。
将计算字段命名为“4-4-5 Segment”(4-4-5 分段)
在计算对话框中输入以下计算
IF([Weeks in Quarter] > 8) THEN "1" ELSEIF ([Weeks in Quarter] > 4) THEN "2" ELSE "3" END
- 从“数据”窗格中,将“4-4-5 Segment”(4-4-5 分段)计算字段拖到“行”功能区。
另请参见