如何计算 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 中计算 7、14 和 30 天移动平均线