我正在尝试在过去一周内获取与特定实体ID相关联的所有行。每行都有一个时间戳。我想通过从日期时间戳中提取日期来分组这些实体,但是当我尝试时,我得到了
来自bigquery的错误:(L6:28):GROUP BY中的表达式STRFTIME_UTC_USEC([data_timestamp],'%Y-%m-%d')无效
似乎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)
查看数据,看起来质量,这里称为'data_timestamp'实际上是一个合适的时间戳;我真的不明白为什么DATE()函数会失败。
任何帮助或提示?谢谢!
答案 0 :(得分:4)
您的查询有两个问题
因此,您的查询可能如下所示:
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
答案 1 :(得分:1)
不幸的遗留SQL不允许GROUP BY表达式,只能通过列名称。但是使用标准SQL,您可以这样做:
SELECT * FROM myproj.mydataset.mytable
WHERE
bool_property=False AND
entity_id=5667423172689920 AND
DATE_DIFF(CURRENT_DATE(), EXTRACT(DATE FROM data_timestamp), DAY) <= 7
GROUP BY EXTRACT(DATE FROM data_timestamp)