Представление Hive / Hue возвращает все строки из новейшего раздела (год / месяц / день) - PullRequest
0 голосов
/ 20 мая 2019

Я хочу создать представление, которое просто выбирает строки последних разделов.Я могу сделать это, присоединившись к подзапросу, который делает максимум значений, но это занимает очень много времени.Я надеялся, что смогу загрузить результат show patitions в таблицу, а затем каким-то образом использовать его в предложении where, но это станет беспорядком.

Какой-нибудь элегантный способ сделать это?

ПримерТаблица (customer_usage) выглядит следующим образом:

customer_id
event_id
load_year
load_month
load_day
total_usage

Все значения.

show partition customer_usage Возвращает:

>     2 load_year=2018/load_month=10/load_day=10
>     3 load_year=2018/load_month=10/load_day=11
>     4 load_year=2018/load_month=10/load_day=12
>     5 load_year=2018/load_month=10/load_day=13
>     6 load_year=2018/load_month=10/load_day=14
>     7 load_year=2018/load_month=10/load_day=15
>     8 load_year=2018/load_month=10/load_day=16
>     9 load_year=2018/load_month=10/load_day=17

Формат таблицы - паркет на hadoop.

Ответы [ 2 ]

0 голосов
/ 22 мая 2019

Вы можете попробовать скрипт оболочки для сортировки и получения последнего раздела, который будет вашим последним разделом.

hive -e "show partitions <table_name>" | sort -V | tail -1

Я пытался использовать таблицу с 3 разделами (год, месяц, день) со строкой в ​​качестве типа данных.Приведенная выше команда принесла мне последний раздел

Надеюсь, это поможет:)

0 голосов
/ 21 мая 2019
create or replace view vw_customer_usage
as select * from customer_usage
where load_day >= current_date - 7

если вам нужны данные за последние 7 дней. Аналогичным образом добавьте предложение where для месяца и года.

...