如何在 AWS Athena 的查询中创建对已解析字段的引用?



在此查询中,time字段使用parse_datetime解析 2 次:

SELECT
date_trunc('HOUR', parse_datetime(time,'yyyy-MM-dd''T''HH:mm:ss.SSSSSS''Z')),
*
FROM
logs
WHERE
parse_datetime(time,'yyyy-MM-dd''T''HH:mm:ss.SSSSSS''Z') BETWEEN timestamp '2020-05-14 19:00' AND timestamp '2020-05-14 23:59'

我试过这个,但没有用:

SELECT
parse_datetime(time,'yyyy-MM-dd''T''HH:mm:ss.SSSSSS''Z') as parsed_time,
date_trunc('HOUR', parsed_time),
*
FROM
logs
WHERE
parsed_time BETWEEN timestamp '2020-05-14 19:00' AND timestamp '2020-05-14 23:59'

可以只解析一次time

根据SQL规范,WHERE子句不能引用SELECT子句中的投影,它只能引用FROM提供的列。

  • 您可以在WHERE子句中完整重复该表达式:WHERE parse_datetime(...) BETWEEN ...
  • 您可以将查询包装为子查询,如下所示:
SELECT *
FROM (
SELECT parse_datetime(....) as parsed_time, ...
FROM ...
)
WHERE parsed_time BETWEEN ...

我无法评论,我写作为答案,因为我的分数不够。 你能这样改变它并尝试一下吗?

SELECT
parse_datetime(time,'yyyy-MM-dd''T''HH:mm:ss.SSSSSS''Z') as parsed_time,
logs.*
FROM
logs
HAVING parsed_time BETWEEN timestamp '2020-05-14 19:00' AND timestamp '2020-05-14 23:59'

相关内容

  • 没有找到相关文章

最新更新