如何使用 date
类型
当您使用投影分区键的 date
类型时,您必须指定一个范围。由于在创建 Firehose 传输流之前没有日期数据,您可以使用创建日期作为开始日期。此外,由于您没有将来日期的数据,您可以使用特殊令牌 NOW
作为结束日期。
在 CREATE TABLE
示例中,开始日期指定为 UTC 时间 2021 年 1 月 1 日午夜。
注意
配置一个与您的数据尽可能匹配的范围,以便 Athena 仅查找现有分区。
在示例表上运行查询时,Athena 将 datehour
分区键上的条件与范围结合使用来生成值。请考虑以下查询:
SELECT * FROM my_ingested_data WHERE datehour >= '2020/12/15/00' AND datehour < '2021/02/03/15'
SELECT
查询中的第一个条件使用在 CREATE TABLE
语句指定的日期范围开始之前的日期。由于分区投影配置没有为 2021 年 1 月 1 日之前的日期指定分区,因此 Athena 仅在以下位置查找数据,并忽略查询中较早的日期。
s3://amzn-s3-demo-bucket/prefix/2021/01/01/00/ s3://amzn-s3-demo-bucket/prefix/2021/01/01/01/ s3://amzn-s3-demo-bucket/prefix/2021/01/01/02/ ... s3://amzn-s3-demo-bucket/prefix/2021/02/03/12/ s3://amzn-s3-demo-bucket/prefix/2021/02/03/13/ s3://amzn-s3-demo-bucket/prefix/2021/02/03/14/
同样,如果查询在 2021 年 2 月 3 日 15:00 之前的日期和时间运行,则最后一个分区将反映当前日期和时间,而不是查询条件中的日期和时间。
如果您想查询最新数据,您可以利用 Athena 不生成未来日期的事实,并仅指定起始 datehour
,如以下示例所示。
SELECT * FROM my_ingested_data WHERE datehour >= '2021/11/09/00'