HIVE: как измерить стоимость запроса на улей для сравнения с использованием разных типов данных? - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть запрос, который требует сравнения двух дат в выписке дела. Как определить, какие типы данных лучше всего подходят для выполнения этого запроса?

Строка

Дата

Метка времени

Вот пример запроса:

select customer_name, segment, month
, count(distinct case when visit_date <= month_end
                      and mbr_is_active 
                      then mbr_id 
                      else null end) as mbr_visitors_cum
from visit_tmp
group by customer_name, segment, month
;

У меня были поля даты, сохраненные в виде строки, и все шло хорошо. Теперь они хотят с начала года и число посещений за 12 месяцев, поэтому вышеприведенное становится:

select customer_name, segment, month
, count(distinct case when visit_date <= month_end 
                      and mbr_is_active 
                      then mbr_id 
                      else null end) as mbr_visitors_cum
, count(distinct case when visit_date <= month_end
                      and substr(visit_date,1,4) = substr(month_end,1,4)
                      and mbr_is_active 
                      then mbr_id 
                      else null end) as mbr_visitors_ytd
, count(distinct case when visit_date <= month_end
                      and visit_date > add_months(month_end,-12)
                      and mbr_is_active 
                      then mbr_id 
                      else null end) as mbr_visitors_r12m
from visit_tmp
group by customer_name, segment, month
;

Теперь процесс занимает намного больше времени. Я думаю, что если я преобразую поля visit и month_end в дату, они будут обрабатываться быстрее, но кроме часов, как вы узнаете?

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