如何计算BigQuery中每天添加的平均记录数??

时间:2019-11-19 11:53:28

标签: sql google-bigquery

我在BigQuery中有一个表,该表的列为 Published_date ,其数据类型为“时间戳”。我想计算该表中每天(特定月份)添加的平均行数。我有以下查询

SELECT AVG(Num_Rows) 
FROM (SELECT [Day]=DAY( Published_Date ), Num_Rows=COUNT(*)
FROM `mytable`
WHERE Published_Date BETWEEN '20190729' AND '20190729 '
GROUP BY DAY( Published_Date ) ) AS Z

但是它会产生以下错误

  

无法将文字“ 20190729”转换为TIMESTAMP类型

由于我只需要timestamp列中的日期,该如何处理时间戳?

2 个答案:

答案 0 :(得分:0)

使用显式转换:

WHERE Published_Date BETWEEN TIMESTAMP('2019-07-29') AND TIMESTAMP('2019-07-29')

请注意,您有一列名为“ _date”,但错误是说该值是时间戳。我觉得这很混乱。我们在_ts的列中使用timestamps(对于_dt来说是datetime,对于_date来说是date)中使用约定。

为什么这很重要?时间戳记为UTC。因此,您可能需要注意时区和时间成分-在名为Publish_Date的列中并不明显。

答案 1 :(得分:0)

  

我要计算该表中每天(特定月份)每天增加的行数

以下BigQuery标准SQL示例

#standardSQL
SELECT AVG(Num_Rows) AS avg_rows_per_day
FROM (
  SELECT DATE(Published_Date) AS day, COUNT(*) AS Num_Rows
  FROM `project.dataset.mytable`
  WHERE DATE(Published_Date) BETWEEN '2019-07-01' AND '2019-07-31'
  GROUP BY day
)