周数

一年中的周数从 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 的文档。

这有帮助吗?

感谢您的反馈!
想改进这些文档? 提议更改。
© . This site is unofficial and not affiliated with Metabase, Inc.