Диаграмма временных рядов с агрегацией по перекрывающимся интервалам - PullRequest
0 голосов
/ 26 сентября 2019

Мой набор данных имеет следующую форму:

Start Date  End Date    Count Contact
2019-01-20  2019-05-10  50        A
2019-03-05  2019-06-07  20        A
2019-03-05  2019-06-07  20        B
....

Мне нужна диаграмма временных рядов, где ось X - месяцы, а ось Y - общее количество.

Например, записибыло бы

Month TotalCount Contact
Jan     50          A
Jan      0          B
Feb     50          A
Feb      0          B
Mar     70          A
Mar     20          B
Apr     70          A
Apr     20          B
May     70          A
May     20          B
Jun     20          A
Jun     20          B
Jul      0          A
Jul      0          B
...

Как я могу добиться этого в Data Studio?Данные поступают из BigQuery.

1 Ответ

0 голосов
/ 26 сентября 2019

Вы не сможете сделать это визуально в Data Studio без предварительной обработки набора данных.

Вместо этого вы можете использовать пользовательский запрос для генерации диапазона дат начала месяца (https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#generate_date_array), а затем объедините все строки из набора данных, где начинается месяц, или между датой начала и датой окончания.

Пример кода для вашего примера

WITH CTE AS (
SELECT date('2019-01-20') start_date,  date('2019-05-10') end_date,  50 count, 'A' contact
UNION ALL SELECT date('2019-03-05'), date('2019-06-07'), 20, 'A'
UNION ALL SELECT date('2019-03-05'), date('2019-06-07'), 20, 'B'
), monthDates AS (

SELECT months FROM
UNNEST(GENERATE_DATE_ARRAY('2019-01-01', '2019-07-01', INTERVAL 1 MONTH)) months
), monthContact AS (

SELECT months, contact
FROM monthDates m
CROSS JOIN CTE
GROUP BY 1,2
)

SELECT months, ifnull(sum(count),0) count, m.contact
FROM monthContact m
LEFT JOIN CTE c ON m.months BETWEEN start_date AND end_date AND m.contact = c.contact
GROUP BY 1,3
ORDER BY 1,3
...