Presto/Athena 中嵌套日期分区的比较查询
Comparison query on nested date partition in Presto/Athena
我将 parquet 数据存储在 S3 上,以 Hive 理解的格式进行分区
s3://<base_path>/year=2019/month=11/day=08/files.pq
table 架构还将 year, month, day
指定为分区字段。
是否可以使用这种数据组织来比较查询,特别是 LIKE, IN, BETWEEN
日期查询? AWS Athena best practices 博客似乎暗示了它的可能性(SELECT count(*) FROM lineitem WHERE l_shipdate >= '1996-09-01' AND l_shipdate < '1996-10-01'
),但我无法弄清楚如何在 table 期间指定复合字段(查询中的 l_shipdate
)创建或查询期间。[=17=]
是的,可以,但看起来不是很优雅)
SELECT col1, col2
FROM my_table
WHERE CAST(date_parse(concat(CAST(year AS VARCHAR(4)),'-',
CAST(month AS VARCHAR(2)),'-',
CAST(day AS VARCHAR(2))
), '%Y-%m-%d') as DATE)
BETWEEN DATE '2018-01-01' AND DATE '2018-01-31'
我将 parquet 数据存储在 S3 上,以 Hive 理解的格式进行分区
s3://<base_path>/year=2019/month=11/day=08/files.pq
table 架构还将 year, month, day
指定为分区字段。
是否可以使用这种数据组织来比较查询,特别是 LIKE, IN, BETWEEN
日期查询? AWS Athena best practices 博客似乎暗示了它的可能性(SELECT count(*) FROM lineitem WHERE l_shipdate >= '1996-09-01' AND l_shipdate < '1996-10-01'
),但我无法弄清楚如何在 table 期间指定复合字段(查询中的 l_shipdate
)创建或查询期间。[=17=]
是的,可以,但看起来不是很优雅)
SELECT col1, col2
FROM my_table
WHERE CAST(date_parse(concat(CAST(year AS VARCHAR(4)),'-',
CAST(month AS VARCHAR(2)),'-',
CAST(day AS VARCHAR(2))
), '%Y-%m-%d') as DATE)
BETWEEN DATE '2018-01-01' AND DATE '2018-01-31'