Оптимизировать запрос, оставляя соединение на многораздельной таблице
Интересно, есть ли способ дальнейшей оптимизации объема данных, обрабатываемых при выполнении левого соединения на многораздельных таблицах, для создания комбинированного представления.
У меня более тысячи ежедневных таблиц (около 20 МБ каждая, около трехлетних данных. Я пытаюсь сделать так, чтобы оставалось объединять каждую из них со статической таблицей (около 15 ГБ), и у меня есть "комбинированная" таблица, в которой хранятся все выход левого соединения.
Я обновляю ежедневные таблицы еженедельно, то есть каждую неделю создаю 7 тальбов с полем раздела даты, для которой таблица, и затем перезаписываю "комбинированную" таблицу последними данными. В настоящее время процесс запроса около 36 ГБ.
Неэффективность здесь заключается в том, что объединение выполняется на всех ежедневных таблицах, в отличие от последних 7, которые я только что добавил, и использование поля "где на разделенном поле" для фильтрации до последних 7 дней не оптимизирует обрабатываемую сумму.
Это запрос, который я использовал, чтобы объединить все, ISBN является ключом соединения.
SELECT o.* EXCEPT (Date), Date(o.Date) as Date, Appended.* EXCEPT(ISBN)
FROM (SELECT * FROM `2019.all_traffic_*`) as o
LEFT OUTER JOIN `2019.all_isbn` as Appended ON o.ISBN = Appended.ISBN
Лучший оптимизированный способ, который я могу придумать, - это добавить объединенные результаты для последней 7-секционной таблицы в существующую "комбинированную" таблицу. И я не уверен, как этого добиться.
Если у вас есть какие-либо рекомендации по использованию секционированных таблиц в BQ, пожалуйста, помогите, заранее спасибо!