【问题标题】:group all readings by day in BigQuery在 BigQuery 中按天对所有读数进行分组
【发布时间】:2019-02-19 05:32:03
【问题描述】:

我是 BigQuery 的新手,因此我正在努力以一种可能有用的方式对我的数据进行分组。此时我已将 unix 时间戳转换为日期(例如 2018-08-27 04:54:56 UTC 等)。我每 10 分钟左右就有一次读数,我只想按日期对它们进行分组,然后为我的各个专栏取日平均值。我认为'group by'然后'avg'可能是前进的方向,但我不确定如何实施第一部分。到目前为止,我用来创建表的代码如下:

  SELECT TIMESTAMP_SECONDS(timestamp) as timestamp,humidity,co2,temperature,app_id
  FROM data.staging 
  where timestamp is not null
  ;

下面是我的输出的几行:

|| Timestamp              || humidity  || co2   || temperature  || app id||

||========================||===========||=======||==============||========||

||2018-08-31 13:35:50 UTC || 63.4      || 634.5 || 21.2         || office_||

||2018-08-31 14:37:20 UTC || 67.8      || 600.4 || 20.8         || office_||

等等。

很抱歉格式不佳,如果还有其他需要,我很乐意提供。感谢您的帮助!

【问题讨论】:

    标签: sql group-by timestamp google-bigquery average


    【解决方案1】:

    您可以将时间戳转换为日期,然后使用GROUP BY

    SELECT DATE(TIMESTAMP_SECONDS(timestamp)) as dte, AVG(humidity), AVG(co2), AVG(temperature)
    FROM data.staging 
    WHERE timestamp is not null
    GROUP BY dte
    ORDER BY dte;
    

    请注意,日期是 UTC 日期。 DATE() 接受第二个参数。我经常这样称呼它:

    SELECT DATE(TIMESTAMP_SECONDS(timestamp), 'America/New_York') as dte, 
    

    【讨论】:

    • 感谢您的快速响应,这非常有效
    猜你喜欢
    • 2016-08-02
    • 2020-09-21
    • 1970-01-01
    • 2017-06-27
    • 1970-01-01
    • 2017-02-08
    • 1970-01-01
    • 2022-10-07
    • 1970-01-01
    相关资源
    最近更新 更多