Я думаю об организации набора данных BigQuery с несколькими таблицами, к которым я могу обращаться с использованием подстановочных знаков.
В этом случае будет потенциально более 1000 таблиц, каждая из которых представляет своего клиента. Мне нужно иметь возможность запрашивать их по отдельности, а также запрашивать их все одновременно.
Я имею в виду использование нескольких таблиц, а не одной таблицы с кластеризацией, потому что при выполнении запросов только для определенных c клиентов, я хотел бы иметь возможность сканировать только те данные, которые мне нужны.
На странице Квоты и ограничения перечислены следующие ограничения, которые выглядят применимыми:
- Максимальное количество таблиц, на которые ссылается запрос, - 1000
- Максимально разрешенное устаревшее и стандартное SQL длина запроса - 12 МБ
- Ограничение разрешенной длины запроса включает длину всех представлений и таблиц подстановочных знаков, на которые ссылается запрос.
Мои вопросы:
1) При выполнении запроса с подстановочными знаками (например, SELECT * FROM `project_id.dataset_id.table_*`
) выполните все отдельные действия. Таблицы, соответствующие шаблону, подсчитываются с этим пределом в 1000 таблиц?
2) Что именно считается с пределом в 12 МБ? Например, предположим, у меня есть следующие таблицы project_id.dataset_id.table_1
, project_id.dataset_id.table_2
, project_id.dataset_id.table_3
.
- Если я выполню SELECT на
table_*
, что будет составлять разрешенную длину запроса? Включает ли оно полное имя всех таблиц (project_id.dataset_id.table_1
, project_id.dataset_id.table_2
, project_id.dataset_id.table_3
)? - Если я использую подстановочный знак
table_*
, но включаю фильтр для _TABLE_SUFFIX
(например, WHERE _TABLE_SUFFIX = "1"
), исключает ли это таблицы, которые не соответствуют фильтру из разрешенного запроса?
3) Есть ли другие ограничения, о которых мне следует знать?
Заранее спасибо.