Накопительный подсчёт и сумма¶
Накопительный подсчёт вычисляет аддитивный общий счётчик строк по группировке. Сумма с накоплением вычисляет скользящую сумму (также известную как "промежуточный итог") столбца по группировке.
Синтаксис¶
Вы можете использовать предопределённые метрики "Счёт с накоплением" и "Сумма с накоплением" или пользовательское выражение:
Накопительные метрики можно использовать только на шаге Суммирование конструктора запросов — вы не можете использовать накопительные метрики для создания пользовательского столбца или фильтра.
Как вычисляются накопительные метрики¶
Внутренне накопительные метрики вычисляются в три этапа:
- Группировка записей с использованием группировки из блока Суммировать по.
- Подсчёт строк в каждой группе.
- Для каждой группы вычисление накопительного итога подсчётов во всех предыдущих группах, включая текущую группу.
Поскольку накопительные метрики используют значения из предыдущих строк, порядок сортировки в столбце группировки имеет значение.
Например, если у вас есть таблица с данными, сгруппированными по месяцам, Glarus BI будет вычислять накопительный подсчёт следующим образом:
Месяц | Count |
CumulativeCount |
---|---|---|
Июль | 5 | 5 |
Ноябрь | 4 | 5 + 4 = 9 |
Март | 2 | 5 + 4 + 2 = 11 |
Если сортировка изменится (при этом значения остаются теми же), то накопительный подсчёт также изменится:
Месяц | Count |
CumulativeCount |
---|---|---|
Март | 2 | 2 |
Июль | 5 | 2 + 5 = 7 |
Ноябрь | 4 | 2 + 5 + 4 = 11 |
Когда у вас только одна группировка в запросе, Glarus BI будет сортировать данные по столбцу группировки в порядке возрастания (используя логику, которую ваша база данных использует для типа данных столбца). Чтобы изменить способ накопления метрики в Glarus BI, вы можете добавить блок Сортировка по столбцу группировки.
Накопительные метрики с несколькими группировками¶
Поскольку накопительные метрики вычисляют свои итоги на основе предыдущих строк, Glarus BI должен определить, что представляют собой эти предыдущие строки. Glarus BI будет решать, как вычислять и отображать накопительную метрику, сначала на основе того, группируете ли вы по столбцу даты и времени, затем по порядку других группировок.
Запросы с измерением даты и времени¶
Если вы используете измерение даты и времени в блоке Суммировать, Glarus BI будет накапливать по измерению даты и времени, затем группировать по любым другим полям в блоке Суммировать (по порядку):
Если есть несколько измерений даты и времени (включая несколько группировок по одному и тому же столбцу даты и времени), Glarus BI будет накапливать по более детальному измерению, независимо от их порядка. Например, если вы группируете по "Создано: Месяц" и "Просмотрено: Неделя", Glarus BI будет накапливать по "Просмотрено: Неделя".
В запросах с измерением даты и времени блоки Сортировка для полей, не относящихся к дате и времени, не влияют на то, как Glarus BI вычисляет результаты. Блоки сортировки влияют только на порядок группировок в результатах.
Запросы без измерения даты и времени¶
Если в блоке Суммировать нет поля даты и времени, Glarus BI будет накапливать по последнему измерению, указанному в блоке Суммировать, и группировать по другим полям в их порядке, слева направо.
По умолчанию Glarus BI будет использовать сортировку по возрастанию для измерения, используемого для накопления. Вы можете добавить блок Сортировка для измерения накопления, чтобы изменить порядок, что изменит как способ вычисления накопительной метрики в Glarus BI, так и способ представления результатов.
Сортировка по любому полю отличному от последнего (накопительного) поля влияет только на порядок группировок в результатах. Это не изменит способ вычисления результатов в Glarus BI.
Связанные функции¶
Накопительный подсчёт в 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 (>_) в правом верхнем углу.