Ich habe eine große Abfrage-Code Absatz hive wie dies unter:Wie optimiert man eine Hive-Abfrage mit mehreren Zählungen (distinct ...) auf überlappende Perioden?
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 ;
der einzige Unterschied zwischen diesen Feldern die Anzahl der Tage ist, die die Länge des Zeitfensters darstellt. Das macht meine Abfrage sehr groß und es ist schwierig, Fehler zu machen.
dt_15 ist nur ein String-Variable definiert vor:
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));
Alle Jungs mir einfacher zu rekonstruieren können helfen? wie die Verwendung von Schleifen zu Produktfeldern in einer neuen Tabelle?
Danke.
Die Ausgabefelder sind, müssen die nicht geändert werden kann. das Ergebnis sollte eine horizontale Tabelle sein. – yanachen
Es ist immer noch das gleiche –