У меня есть огромный код пункта улей запрос, как это показано ниже:Как оптимизировать запрос куста с несколькими счетчиками (отчетливо ...) в периоды перекрытия?
select
count(distinct case when click_day between ${hiveconf:dt_180} and ${hiveconf:dt_end} and recommend_flag=1 then productid else null end) as unique_hk_products_cnt_180d,
count(distinct case when click_day between ${hiveconf:dt_90} and ${hiveconf:dt_end} and recommend_flag=1 then productid else null end) as unique_hk_products_cnt_90d,
count(distinct case when click_day between ${hiveconf:dt_30} and ${hiveconf:dt_end} and recommend_flag=1 then productid else null end) as unique_hk_products_cnt_30d,
count(distinct case when click_day between ${hiveconf:dt_15} and ${hiveconf:dt_end} and recommend_flag=1 then productid else null end) as unique_hk_products_cnt_15d,
count(distinct case when click_day between ${hiveconf:dt_7} and ${hiveconf:dt_end} and recommend_flag=1 then productid else null end) as unique_hk_products_cnt_7d
from mytable ;
единственное различие между этими полями является количество дней, которое представляет собой длину временного окна. Это делает мой запрос очень большим, и трудно ошибиться.
dt_15 просто переменная строка определена до:
set dt_15 = CONCAT(SUBSTRING(date_sub(current_date,15), 1, 4), SUBSTRING(date_sub(current_date,15), 6, 2), SUBSTRING(date_sub(current_date,15), 9, 2));
Все ребята могут помочь мне восстановить его более простым? как использовать петлю для полей продукта в новой таблице?
Спасибо.
Исходные поля должны быть изменены. то есть результат должен быть горизонтальной таблицей. – yanachen
Он все тот же –