累计计数和求和

累积计数计算在分组的所有行上的加法总数。累积总和计算在分组列上的滚动总和(也称为滚动总计)。

语法

您可以使用预定义的“累积计数”和“累积总和”度量指标,或自定义表达式

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版本的文档。

想要改进这些文档? 提出更改。