我正在尝试获取上周与特定实体 ID 关联的所有行。每行都有一个时间戳。我想通过从日期时间戳中提取日期来按天对这些实体进行分组,但是当我尝试时,我得到了
Error: (L6:28): expression STRFTIME_UTC_USEC([data_timestamp], '%Y-%m-%d') in GROUP BY is invalid
来自大查询。 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() 函数会失败。
有任何帮助或提示吗?谢谢!
最佳答案
你的查询有两个问题
- 在 BigQuery Legacy SQL 中,您不能在 GROUP BY 语句中使用表达式, 而不仅仅是字段(顺便说一句,BigQuery 标准 SQL 中不存在此限制)
- 当您执行 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
关于sql - 无法从 BigQuery 中的时间戳中提取日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39197941/