Impala:获取匹配分区的列表

问题描述 投票:0回答:1

我们有一个黑斑羚表,其被划分为year=yyyy/month=mm/day=dd/hour=hh。客户端应用程序之一可以使用select格式的fromto日期向其发送dd/mm/yyyy查询。

现在,例如如果from日期设置为01/11/2019to日期设置为29/02/2020,则要使用分区,imapla SQL应该类似于:

select * from table where (year = 2019 AND month in (11, 12)) OR (year = 2020 AND month in (1,2))

Impala SQL中是否可以将日期转换为上面的正确分区?

很遗憾,所讨论的客户端是不允许对上述逻辑进行编程的BI工具。

cloudera impala
1个回答
0
投票

因此,解决方案是-WHERE CAST( concat (CAST(table_year AS string), CAST(table_month AS string)) AS BIGINT) BETWEEN CAST( concat (CAST(YEAR(from_dt) AS string), CAST(MONTH(from_dt) AS string)) AS BIGINT) AND CAST( concat (CAST(YEAR(to_dt) AS string), CAST(MONTH(to_dt) AS string)) AS BIGINT)

基本上,将年份和月份连接在一起以创建字符串,然后将其转换为整数以在函数之间使用。这将适用于任何日期到任何日期范围的日期。由于您在月份和年份上进行了分区,因此此过滤器将按照分区进行工作,并且效果很好。

© www.soinside.com 2019 - 2024. All rights reserved.