无法从BigQuery的时间戳中提取日期

bge*_*hel 2 sql google-bigquery google-cloud-platform

我正在尝试获取上周与特定实体ID相关联的所有行。每行都有一个时间戳。我想通过从datetime时间戳中提取日期来按天对这些实体进行分组,但是当我尝试时,我得到了

错误:(L6:28):GROUP BY中的表达式STRFTIME_UTC_USEC([data_timestamp],'%Y-%m-%d')无效

来自bigquery。DATE()函数似乎出了点问题。

这是我正在运行的完整查询:

SELECT Count(*) FROM [myproj:mydataset.mytable] 
WHERE 
    bool_property=False 
AND 
    entity_id=5667423172689920 
AND
    DATEDIFF(CURRENT_DATE(), data_timestamp) <= 7
GROUP BY DATE(data_timestamp)
Run Code Online (Sandbox Code Playgroud)

查看数据,似乎质量(此处称为“ data_timestamp”)实际上是适当的时间戳;我真的不明白为什么DATE()函数会失败。

有帮助或提示吗?谢谢!

Mik*_*ant 5

您的查询有两个问题

  1. 在BigQuery旧版SQL中,您不能在GROUP BY语句中使用表达式,而只能在字段中使用(顺便说一句,BigQuery Standard SQL中不存在此限制)
  2. 当您执行GROUP BY时-您不能仅选择所有字段,而是需要使用一些聚合函数,例如COUNT或SUM等(对于不属于GROUP VY的那些字段)

因此您的查询如下所示:

SELECT DATE(data_timestamp) AS dt, COUNT(1) AS cnt 
FROM [myproj:mydataset.mytable] 
WHERE bool_property=FALSE 
AND entity_id=5667423172689920 
AND DATEDIFF(CURRENT_DATE(), data_timestamp) <= 7
GROUP BY dt
Run Code Online (Sandbox Code Playgroud)