週數

年份的週數從 1 到 52、53 或 54 編號(取決於年份的第一週是如何判定的)。Metabase 支援多種演算法來判定年份的第一週。

在查詢產生器中,您可以依年份的週數分組摘要,或使用自訂表達式從日期欄位中擷取年份的週數。

依年份的週數分組摘要在進行期間與期間的比較時非常有用,例如,當比較今年的第一週與前一年的第一週的指標時。

在查詢產生器中依年份的週數摘要

您可以選擇在查詢產生器中依年份的週數分組指標。

  1. 在「摘要」區段中,按一下選取要分組依據的欄位,然後選取日期欄位
  2. 按一下欄位名稱右側具有日期精細度的下拉式選單(例如,「依月份」);
  3. 在具有日期精細度選項的彈出視窗中,按一下更多...以查看其他選項,然後選取年份的週數

結果將依週數摘要(而不是週日期,例如當您選取「依週」選項時)

Summarize by week of year

Metabase 如何為年份的週數編號

預設情況下,當您在查詢產生器中依年份的週數分組時,Metabase 會找到年份的第一個星期日,並將該週稱為「第 1 週」。第一個星期日之前的任何一天都視為前一年的最後一週(第 52 或 53 週)。

使用不同的年份的第一週

即使您的執行個體在在地化設定中設定了不同的每週第一天,查詢產生器的預設年份的週數分組永遠會使用星期日作為每週的第一天。

使用您執行個體在地化設定的方式是在自訂表達式中使用 week 函數,並搭配 "Instance" 模式,如下所示:week([建立於], "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 文件