【问题标题】:Comparison query on nested date partition in Presto/AthenaPresto/Athena 中嵌套日期分区的比较查询
【发布时间】:2019-11-08 18:39:13
【问题描述】:

我将 parquet 数据存储在 S3 上,以 Hive 理解的格式进行分区

s3://<base_path>/year=2019/month=11/day=08/files.pq

表架构还将year, month, day 指定为分区字段。

是否可以将查询,特别是日期的LIKE, IN, BETWEEN 与这种数据组织进行比较? AWS Athena best practices 博客似乎暗示了它的可能(SELECT count(*) FROM lineitem WHERE l_shipdate &gt;= '1996-09-01' AND l_shipdate &lt; '1996-10-01'),但我无法弄清楚如何在表创建期间或查询期间指定复合字段(查询中的l_shipdate)。

【问题讨论】:

    标签: hive presto amazon-athena


    【解决方案1】:

    是的,有可能,但看起来不是很优雅)

    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'
    

    【讨论】:

    • 您知道在这种情况下,比较是否能够利用这些列是分区键这一事实吗?谢谢!
    • 是的,它会的)我记得检查扫描的数据是否与明确指定这些键相同)
    猜你喜欢
    • 2021-02-01
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多