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

Posted

技术标签:

【中文标题】如何计算 BigQuery 中每天添加的平均记录数。?【英文标题】:How to Calculate avg no of records added per day in BigQuery.? 【发布时间】:2019-11-19 11:53:28 【问题描述】:

我在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 列中的日期?

【问题讨论】:

【参考方案1】:

我想计算该表中每天(特定月份)添加的平均行数

以下 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
) 

【讨论】:

【参考方案2】:

使用显式转换:

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

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

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

【讨论】:

谢谢你......但是我将如何按天分组?......我使用了你提到的显式转换,但现在它产生以下错误......“无法识别的名称:Day”在第 2 行我的查询..我应该如何处理它? "2019-10-21 17:31:00 UTC" 列值的样子....我应该如何按天分组?因为我想要特定月份每天添加的平均行数...... @MuhammadAqeel 。 . .使用DATE() 而不是DAY()

以上是关于如何计算 BigQuery 中每天添加的平均记录数。?的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery:计算每日分区表中的平均值

如何在 BigQuery 中获取每天的累积记录

在 bigquery 中计算 7、14 和 30 天移动平均线

如何计算 BigQuery 的滚动平均值

使用 Azure Monitor Metrics 获取平均每日计算分钟数

受 BigQuery 查询影响的行数