如何将缺失日期添加为 table 中的行

How to add in missing dates as rows in table

我有以下代码,它让我知道每天有多少行被完成。

SELECT
  ingestion_time,
  COUNT(ingestion_time) AS Rows_Written,
FROM
  `workday.ingestions`
GROUP BY
  ingestion_time
ORDER BY
  ingestion_time

这会给我如下所示的内容:

Ingestion_Time Rows_Written
Jan 2, 2021 8
Jan 5, 2021 5
Jan 8, 2021 9
Jan 9, 2021 2

但是,我希望能够添加缺失的日期,这样 tables 看起来像这样:

Ingestion_Time Rows_Written
Jan 2, 2021 8
Jan 3, 2021 0
Jan 4, 2021 0
Jan 5, 2021 5
Jan 6, 2021 0
Jan 7, 2021 0
Jan 8, 2021 9
Jan 9, 2021 2

我该怎么做呢?是否需要创建一个包含所有日期的完整 table 并以某种方式加入它,或者有其他方法吗?提前致谢。

考虑以下方法

select date(Ingestion_Time) Ingestion_Time, Rows_Written 
from your_current_query union all
select day, 0 from (
  select *, lead(Ingestion_Time) over(order by Ingestion_Time) next_time 
  from your_current_query
), unnest(generate_date_array(date(Ingestion_Time) + 1, date(next_time) - 1)) day            

如果应用于您问题中的示例数据 - 输出为