Импала: Получить список подходящих разделов - PullRequest
0 голосов
/ 23 апреля 2020

У нас есть таблица impala, которая разделена на year=yyyy/month=mm/day=dd/hour=hh. Одно из клиентских приложений может отправлять ему select запросов с датой from и to в формате dd/mm/yyyy.

Теперь, например, например. если для даты from указано 01/11/2019, а для даты to установлено значение 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, который не позволяет программировать логи c выше.

1 Ответ

1 голос
/ 27 апреля 2020

Итак, Решение - -
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)

По сути, объедините год и месяц, чтобы сделать строку, а затем преобразовать ее в целое число для использования между функциями. Это будет работать с любой даты до любого диапазона дат. Поскольку у вас есть раздел по месяцам и годам, этот фильтр будет следовать за разделом и будет работать нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...