Мы собираем данные о программных инструментах, используемых в нашей команде. Одна таблица, которую мы используем для представления использования инструмента в нашей команде, просто подсчитывает, сколько раз этот инструмент запускался за день в команде:
SELECT
day
, num_launches
, tool_name
FROM
dataset.by_tool_by_day
ORDER BY day ASC
;
Дает вам:
| day | num_launches | tool_name |
|-------------|--------------|-----------|
| 2019-12-20 | 1 | Tool A |
| 2019-12-20 | 11 | Tool B |
| 2019-12-20 | 30 | Tool C |
| 2019-12-21 | 14 | Tool B |
| 2019-12-22 | 19 | Tool C |
| 2019-12-23 | 7 | Tool A |
| 2019-12-23 | 4 | Tool B |
| 2019-12-23 | 17 | Tool C |
Проблема в том случае, если в определенный день не было ни одного запуска инструмента, в таблице нет записи, представляющей 0 запусков инструмента в этот день. В приведенном выше примере не было запусков Инструмента A от 21.12.2009. Отсутствие записи 0 запусков повреждает визуализацию этих данных (например, в столбчатой диаграмме), поскольку дни с запусками 0 не представлены.
Я не могу придумать запрос, который использует таблицу календаря для создать "0 запусков" для каждого инструмента в таблице by_tool_by_day. Это легко сделать, если все записи в таблице относятся к одному инструменту. Но я не могу сделать это, если есть несколько инструментов, а следовательно, и несколько рядов дат, которые должны быть «завершены».