累計計數和總和

累計計數會計算跨越一個分組的列的加法總計計數。累計總和會計算跨越一個分組的欄的滾動總和(也稱為執行總計)。

語法

您可以使用預先定義的「累計計數」和「累計總和」指標,或自訂運算式

CumulativeCount
CumulativeSum(column)

累計指標只能在查詢產生器的「摘要」步驟中使用 — 您無法使用累計指標來建立自訂欄或篩選器。

累計指標的計算方式

在底層,累計指標分三個步驟計算

  1. 使用「群組依據」區塊中的分組來群組記錄。
  2. 計算每個群組中的列數。
  3. 對於每個群組,計算所有先前群組(包括目前群組)中計數的累計總計。

由於累計指標使用先前列中的值,因此分組欄中的排序順序很重要。

例如,如果您有一個表格,其中的資料依月份分組,Metabase 將會像這樣計算累計計數

月份 計數 累計計數
七月 5 5
十一月 4 5+4 = 9
三月 2 5 + 4 + 2 = 11

如果排序變更(而值保持不變),則累計計數也會變更

月份 計數 累計計數
三月 2 2
七月 5 2 + 5 = 7
十一月 4 2 + 5 + 4 = 11

當查詢中只有一個分組時,Metabase 會依分組欄以遞增順序排序資料(使用您的資料庫用於欄資料類型的邏輯)。若要變更 Metabase 累積指標的方式,您可以依分組欄新增「排序」區塊。

具有多個分組的累計指標

由於累計指標根據先前列計算其摘要,因此 Metabase 需要判斷這些先前列是什麼。Metabase 將根據您是否依日期時間欄分組,然後依其他分組的順序,決定如何計算和顯示累計指標

具有日期時間維度的查詢

如果您在「群組依據」區塊中使用日期時間維度,Metabase 將會沿著日期時間維度累積,然後依「群組依據」區塊中的任何其他欄位(依順序)分組

Cumulative count by category, source, and created at

如果有多個日期時間維度(包括依相同日期時間欄進行多個群組),Metabase 將會沿著更精細的維度累積,無論其順序為何。例如,如果您依「建立時間:月份」和「檢視時間:週」分組,Metabase 將會沿著「檢視時間:週」累積。

Cumulative count by two datetime fields

在具有日期時間維度的查詢中,非日期時間欄位的「排序」區塊不會影響 Metabase 計算結果的方式。「排序」區塊只會影響結果中分組的順序。

沒有日期時間維度的查詢

如果「群組依據」區塊中沒有日期時間欄位,Metabase 將會沿著「群組依據」區塊中指定的「最後一個」維度累積,並依其他欄位從左到右依序分組。

Cumulative count by two categorical dimensions

預設情況下,Metabase 將會對用於累積的維度使用遞增排序。您可以為累積維度新增「排序」區塊以變更順序,這會變更 Metabase 計算累計指標的方式,以及呈現結果的方式。

Cumulative count by two categorical dimensions with order of accumulation changed

依「最後一個」(累積)欄位以外的任何欄位排序只會影響結果中分組的順序。這不會變更 Metabase 計算結果的方式。

SQL 中的累計計數

在 SQL 中,您可以使用視窗函數來計算累計指標。例如,若要計算數個月的累計訂單計數,您可以使用下列查詢

SELECT
  created_month,
  SUM(count(*)) OVER (
    ORDER BY
      created_month ASC ROWS UNBOUNDED PRECEDING
  ) AS "sum"
FROM
  (
    SELECT
      quantity,
      DATE_TRUNC ('month', created_at) AS created_month
    FROM
      orders
  )
GROUP BY
  created_month
ORDER BY
  created_month ASC

SQL 中的累計總和

對於累計總和,您可以使用

SELECT
  created_month,
  SUM(SUM(quantity)) OVER (
    ORDER BY
      created_month ASC ROWS UNBOUNDED PRECEDING
  ) AS "sum"
FROM
  (
    SELECT
      quantity,
      DATE_TRUNC ('month', created_at) AS created_month
    FROM
      orders
  )
GROUP BY
  created_month
ORDER BY
  created_month ASC

您可以按一下右上角的「檢視 SQL」(「>_」) 按鈕,在查詢產生器中檢視查詢產生的 SQL。

閱讀其他 版本 Metabase 的文件。