ISO-8601 基于周的日历
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 日的第一个星期一开始。这意味着一年可能会在 12 月 29 日和 1 月 4 日之间的任何时间开始。公历的年始终在 1 月 1 日开始。这可能会导致两个日历系统的年在这些日期前后会出现一些差异。每个 ISO-8601 年都是一个长年或短年,包含 52 周或 53 周,具体取决于 ISO-8601 年的开始时间。 |
季度 | ISOQUARTER | ISO-8601 的前三个季度总是有 13 周。最后一个季度有 13 周(短年)或 14 周(长年)。 |
月 | ISO-8601 基于周的日历不使用月。许多零售和财务系统将 ISO-8601 季度划分为三个 4-4-5 周的分段,但也存在其他“月”模式。这些可以使用计算来定义。请参见创建一个 4-4-5 日历。 | |
周数 | ISOWEEK | ISO-8601 基于周的日历中的所有周都正好是 7 天,并且从星期一开始。每一周都属于一年,不像公历允许周跨年延续。长年有 53 周,短年有 52 周。 |
日 | ISO-8601 基于周的日历不使用数字日(例如 14 日或 23 日)。 | |
平日 | ISOWEEKDAY | ISO-8601 平日总是从星期一开始,并以个位数表示。周一是 1,周二是 2,一直到周日的 7。 |
支持 ISO-8601 的日期函数
以下日期函数与 ISO-8601 基于周的日历兼容。
DATEADD 和 DATEDIFF
如果使用非 ISO-8601 日期部分 (day
或者 month
),结果会将 ISO-8601 日期截断到最接近的 ISO 级别。例如,将 ISO-8601 日期增加一个月会导致 iso-week
变化。
DATENAME
除非您使用 iso-year
、iso-quarter
、iso-week
或 iso-weekday
日期部分,否则结果为公历日期。
DATEPART
除非您使用 iso-year
、iso-quarter
、iso-week
或 iso-weekday
日期部分,否则结果为公历日期。
DATETRUNC
将 ISO-8601 日期截断到最接近的 ISO 级别。例如,即使 ISO-8601 不使用“月”,在“月”级别截断 ISO 日期将显示公历月份的第一个 iso-week
。
创建一个 4-4-5 日历
ISO-8601 基于周的日历不使用月。许多零售和财务系统将 ISO-8601 季度划分为三个 4-4-5 周的分段,但也存在其他分段系统。
按照以下步骤操作,了解如何在 Tableau Desktop 中实现 4-4-5 日历。
步骤 1:设置可视化项
- 打开 Tableau Desktop 并连接到“Sample - Superstore”已保存数据源。
- 右键单击“数据”窗格中的数据源以打开“日期属性”对话框。将默认日历更改为“ISO-8601 基于周”。
- 从“数据”窗格中,将“Order Date”(订单日期)拖到“行”功能区。
- 在“行”功能区上,单击“ISOYEAR(Order Date)”上的“+”图标,展开 ISOQUARTER(Order Date)。
- 从“数据”窗格中,将“Sales”(销售额)拖到“列”功能区。
步骤 2:查找每个季度中的周数
在 4-4-5 分段日历中,每个季度分为其中包含 4 周或 5 周的 3 个分段(类似于月)。我们必须了解每个季度中有多少周才能将它们分段。
- 选择“分析”>“创建计算字段”。
- 将计算字段命名为“Week of Quarter”(季度的周)
- 在计算对话框中输入以下计算
DATEPART('iso-week', [Order Date]) - (DATEPART('iso-quarter', [Order Date])-1)*13
步骤 3:创建 4-4-5 日历计算
- 选择“分析”>“创建计算字段”。
- 将计算字段命名为“4-4-5 Segment”(4-4-5 分段)。
- 在计算对话框中输入以下计算
IF([Week of Quarter] <= 4) THEN "1" ELSEIF ([Week of Quarter] <= 8) THEN "2" ELSE "3" END
- 从“数据”窗格中,将“4-4-5 Segment”(4-4-5 分段)计算字段拖到“行”功能区。
生成的可视化项现在每个季度都细分为三个分段。
修改模式
在“4-4-5 分段”计算中,截止点 <=4
和 <=8
来自 4-4-5 模式。
第一个分段的截止点是 <=4
(前四周 (1-4))。第二个分段的截止点是 <=8
(包括第 5-8 周),其余周 (9-13) 在 ELSE 部分中捕获。(IF f语句一直计算到条件为真,因此第二个分段只需指定上限。)
可以针对其他模式修改这些截止点。具体而言:
- 4-5-4 截止点:
4
(前四周,1-4)和9
(接下来的五周,5-9) - 5-4-4 截止点:
5
和9
另请参见