Как ограничить размер запроса BigQuery для тестирования образца запроса через веб-интерфейс пользователя?
Я хотел бы знать, возможно ли ограничить размер запроса BigQuery при выполнении запроса через веб-интерфейс пользователя?
Моя идея состоит в том, чтобы просто проверить запрос, а не запрашивать все мои таблицы; Я хотел бы просто запросить часть этого, например, с номером строки.
Ограничение не оптимизирует стоимость моего запроса, поэтому идея состоит в том, чтобы найти функцию, аналогичную "row_number" или "fetch".
Извините, я маркетолог, а не разработчик, поэтому заранее благодарю за помощь.
1 ответ
Как ограничить размер запроса BigQuery для тестирования...?
1 - Постарайтесь свести к минимуму количество таблиц, участвующих в вашем тестировании. В вашем запросе - более 60 таблиц, задействованных соответственно на даты между 2016-12-11 и в наши дни.
SELECT <fields_list> FROM
TABLE_DATE_RANGE([XXX:85801771.ga_sessions_],
TIMESTAMP('20161211'),
TIMESTAMP('20170315'))
Вместо этого вы можете использовать один и тот же день в качестве начала и конца временного диапазона, таким образом, значительно сокращая количество задействованных таблиц (до одной таблицы) и общий размер сканирования. Например
SELECT <fields_list> FROM
TABLE_DATE_RANGE([XXX:85801771.ga_sessions_],
TIMESTAMP('20161211'),
TIMESTAMP('20161211'))
2 - Минимизировать количество рядов. Возможность сделать это действительно зависит от того, как ваша таблица загружается данными. Если таблица загружается постепенно - вы можете использовать так называемые декораторы таблиц.
Примечание: этот метод работает с таблицами в течение последних 7 дней
Например, ниже будут сканироваться только те данные, которые были в таблице час назад (так называемый декоратор моментальных снимков)
SELECT <fields_list> FROM [XXX:85801771.ga_sessions_20170212@-3600000]
Это хорошо работает с таблицей за последний день, особенно в начале дня, когда размер таблицы еще не большой
Таким образом, чтобы ограничить дальнейшее, вы можете использовать версию ниже (так называемый Range Decorator) - дает вам данные, добавленные от одного часа до получаса
SELECT <fields_list> FROM [XXX:85801771.ga_sessions_20170212@-3600000--1800000]
В заключение, @0
это особый случай, который ссылается на самый старый возможный снимок таблицы: либо 7 дней в прошлом, либо время создания таблицы, если таблице менее 7 дней. Например
SELECT <fields_list> FROM [XXX:85801771.ga_sessions_20170210@0]
3 - Тест по отобранной таблице. Если вы ожидаете экспериментировать со своим запросом снова и снова - вы можете сначала подготовить уменьшенную версию таблицы с таким количеством строк, сколько вам нужно, и применить логику выборки, которая вписывается в вашу бизнес-логику. Чтобы ограничить количество строк, вы можете использовать предложение LIMIT. Чтобы получить случайные строки, вы можете использовать функцию RAND, например,
После того, как выбранная таблица подготовлена - выполняйте все свои запросы к ней до тех пор, пока у вас не будет окончательной версии - после этого - вы можете запустить ее для своих исходных таблиц
И, между прочим, для создания таблицы сэмплирования вам нужно установить таблицу назначения под опциями в веб-интерфейсе.