Функция _TABLE_SUFFIX великолепна и именно то, что я искал, чтобы решить мою проблему - однако она сканирует все данные, совпадающие с подстановочным знаком, когда я использую подзапрос, чтобы определить, какие таблицы сопоставлять.
Если вы выполняете такую операцию, как = или BETWEEN или IN с набором значений в _TABLE_SUFFIX, вы можете увидеть, что объем сканируемых данных уменьшается по сравнению с простым подстановочным знаком:
SELECT sample_data FROM `test.dataset.*`
WHERE _TABLE_SUFFIX IN ("NWD1","NWD2","NWD3","NWD4","NWD5")
-Отсканировано 1,8 ГБ
Однако, если я сделаю следующее:
SELECT sample_data FROM `test.dataset.*`
WHERE _TABLE_SUFFIX IN (SELECT ID FROM subset)
- отсканировано 50 ГБ (этот суб-выбор содержит те же значения, что указаны в явном предложении IN)