Bigquery:按月分组时间戳

时间:2018-10-24 03:06:07

标签: google-bigquery

我是bigquery的新手,可以显示这样的时间戳。

select event_timestamp as timestamp1
          FROM `alive-ios.analytics_160092165.events_201810*` 
          GROUP BY timestamp1

输出是这样的。如何按月分组?像这样吗 https://www.pascallandau.com/bigquery-snippets/convert-timestamp-date-datetime-to-different-timezone/

我尝试使用to_char,DATE等等,这还不行。

enter image description here

3 个答案:

答案 0 :(得分:1)

听起来像您想要TIMESTAMP_TRUNC function,例如

select TIMESTAMP_TRUNC(event_timestamp, MONTH) as timestamp1
FROM `alive-ios.analytics_160092165.events_201810*`
GROUP BY timestamp1

答案 1 :(得分:1)

以下是用于BigQuery标准SQL

SELECT 
  FORMAT_TIMESTAMP('%Y-%m', TIMESTAMP_MICROS(event_timestamp)) month, 
  COUNT(1) events
FROM `project.dataset.table`
GROUP BY month 

注意:您很可能希望每月统计事件,因此我添加了COUNT(1),但是您可以添加所需的任何内容-例如,如果要计算名为{{ 1}}

此外,您的通配符表达式的构建方式将使其仅具有2018年10月月份的事件(假设表名称代表事件发生的时间)-因此,您需要稍微放松一下通配符表达式(对于例如)value,因此您将在整个2018年的几个月内进行活动

假设您的event_timestamp以微秒为单位
如果实际上它们是TIMESTAMP类型-只需删除对TIMESTAMP_MICROS()函数的使用即可

答案 2 :(得分:0)

以Elliott的示例为基础,我认为您需要首先将值转换为时间戳。从您的示例数据中,我认为您需要TIMESTAMP_MICROS

TIMESTAMP_MICROS

select TIMESTAMP_TRUNC(TIMESTAMP_MICROS(event_timestamp), MONTH) as timestamp1
FROM `alive-ios.analytics_160092165.events_201810*`
GROUP BY timestamp1