У меня есть таблица в большом запросе размером 1 ГБ. Я создаю представление из этой таблицы с разделением на столбец created_at (timestamp). Представление полезно для меня, но я хочу написать запрос, используя столбец created_at. Когда я использую этот столбец, выполняется ли запрос для всех данных представления или только для секционированных значений? Я хочу ограничить использование таблицы, например, 500 МБ. Возможно ли с представлениями, используя столбец разделения в предложении where?
Если вы не используете настоящие секционированные таблицы BigQuery (таких понятий как секционированные представления не существует), с вас будет взиматься плата за все данные в столбцах, к которым вы обращаетесь.
Как я могу взимать плату только за многораздельные данные?
Вам нужно скопировать данные в многораздельную таблицу.
Вы можете создавать новые многораздельные таблицы (здесь - документация) и копировать в них данные.
Чтобы запросить секционированную таблицу, вы можете использовать _PARTITIONTIME
, например:
SELECT
[COLUMN]
FROM
[DATASET].[TABLE]
WHERE
_PARTITIONTIME BETWEEN TIMESTAMP('2017-01-01') AND TIMESTAMP('2017-03-01')
Отметьте валидатор (зеленый флажок) в пользовательском интерфейсе, который показывает количество байтов, которые будут обработаны для запроса. Почему бы не попробовать и не посмотреть?