Этот запрос включает в себя 4 таблицы и его выполнение занимает 10,5 часов:
Шаг 1:
create table temp partitioned by (date_pull) stored as parquet as
select <fields>
from trans_ext -- this is the base table
inner join [shuffle] ac -- fact_acc
inner join [shuffle] c --related_acc
left join dt --trx_type
Статистика по количеству строк для таблиц:
trans_ext: 8,289,244,895 (72 partitions)
ac: 985,164,794 (1 partitions)
c: 17,496,531 (1 partition)
dt 4: 369 (1 partition)
Шаг 2: Создайте таблицу счетчиков h из temp
select related_cust, count(*) as ct from temp group by related_cust;
Шаг 3: создайте итоговую таблицу путем внутреннего объединения таблицы счетчиков и примените условие where
select t.*
from temp t
inner join [shuffle] h on h.related_cust=t.related_cust
where t.related_cust is not null
and h.ct <=1000000
order by t.related_cust;
Я думаю, как мне устранитьтаблицу подсчета и создать конечный результат напрямую?окончательный размер таблицы: 19,6 миллиардов строк.
Есть мысли?любой намек высоко ценится.