年度周数

年度周数从 1 到 52、53 或 54 编号(取决于如何确定年度第一周)。Metabase 支持多种算法来确定年度第一周。

在查询构建器中,您可以按年度周数对摘要进行分组,或使用自定义表达式从日期列中提取年度周数。

按年度周数对摘要进行分组在进行同期比较时非常有用,例如,比较今年第一周的指标与去年第一周的指标。

在查询构建器中按年度周数汇总

您可以选择在查询构建器中按年度周数对指标进行分组。

  1. 在“汇总”部分,点击选择要分组的列,然后选择一个日期字段
  2. 点击字段名称右侧的日期粒度下拉菜单(例如,“按月”)
  3. 在日期粒度选项弹出窗口中,点击更多…以查看其他选项,然后选择年度周数

结果将按周数汇总(而不是按周日期,如选择“按周”选项时)

Summarize by week of year

Metabase 如何对年度周数进行编号

默认情况下,当您在查询构建器中按年度周数分组时,Metabase 将查找一年中的第一个星期日,并将该周称为“第 1 周”。第一个星期日之前的任何一天都被视为上一年最后一周(第 52 或 53 周)的一部分。

使用不同的年度第一周

即使您的实例在本地化设置中设置了不同的周起始日,查询构建器的默认年度周数分组将始终使用星期日作为周的起始日。

使用实例本地化设置的方法是使用自定义表达式中的 week 函数,并带有 "Instance" 模式,例如:week([Created At], "Instance")(见下文)。

week 自定义表达式提供了三种计算年度第一周的替代算法。要使用替代算法进行汇总,您可以创建一个自定义列,使用 week 表达式从日期列中提取周数,然后按该自定义列进行分组。

week 自定义表达式

week 自定义表达式将年度周数提取为整数。

语法

week(column, mode)

示例

week([Created At])
week([Created At], "US")
week([Created At], "Instance")

其中

  • column 是您要从中提取周数的日期列。
  • mode 是可选的,指定用于确定年度第一周的算法。它可以是以下之一:
    • "ISO"(默认):年度第一周是包含该年度第一个星期四的周。周从星期一开始。这是 ISO 8601 标准。
    • "US":年度第一周从 1 月 1 日开始。周从星期日开始。在大多数年份中,第一周将是部分周。
    • "Instance":年度第一周从 1 月 1 日开始。周从本地化设置中指定的星期几开始。在大多数年份中,第一周将是部分周。

请注意,目前提供的三种模式均与查询构建器中按年度周数汇总所使用的第一周算法不匹配。

比较不同算法如何计算第一周和最后一周

  • 在查询构建器中使用按年度周数分组

    How the week numbers are calculated for Group by Week of year

  • week(column)week(column, "ISO")

    How the week numbers are calculated by ISO

  • week(column, "US"):

    How the week numbers are calculated by US method

  • week(column, "Instance") 如果实例的周起始日是星期一

    How the week numbers are calculated by Instance method

SQL

不同的 SQL 数据库有不同的方法和函数来提取年度周数。一些引擎提供多种函数来提取年度周数,并提供多种算法来使用 SQL 计算年度周数。请参阅您的数据库文档。

以下是示例函数的不完整列表

数据库 示例 第一周算法
Postgres EXTRACT(WEEK FROM TIMESTAMP created_at) ISO 算法
MySQL WEEKOFYEAR("2017-06-15") 一周的第一天是星期一,并且一年中的第一周有超过 3 天。存在其他函数。
BigQuery EXTRACT(WEEK FROM DATE ticreated_at) 周从 0 编号。早于一年中第一个星期日的日期属于第 0 周。存在其他函数。
Redshift DATE_PART(week, TIMESTAMP created_at) ISO 算法

阅读其他 Metabase 版本的文档。

© . All rights reserved.