GoogleSheets
July 9, 2021

Загрузка данных из Google Sheets в BigQuery

Иногда, а зачастую всегда, если вы работаете с отчетами по требованию от менеджеров, возникает необходимость объединить данные из гугл таблицы и той базой что уже у вас есть в бигквери. Например, менеджер себе в гугл таблице набросал периоды какой-либо акции или распродажи и вам нужно вытащить данные за этот период.

Сделать это можно несколькими способами, в зависимости от того надо ли вам чтобы ваши данные из таблицы периодически обновлялись или же это будет единоразовая выгрузка.

Представим что у вас есть таблица, содержащая айдишку и какой-либо набор параметров. В примере мне, конечно же, было лень создавать большой файл, поэтому я ограничился одной строкой. В реальности у вас будет файл гораздо большего размера, но сути это не меняет

Пример таблицы для импорта из Google Sheets в BigQuery

Загрузка данных через CSV

Здесь все понятно. Скачиваем наш лист с данными из гугл таблицы в формате CSV.
Открываем в нашей таблице меню Файл - Скачать - CSV файл.

Этот вариант отлично подойдет если данные нужно загрузить единоразово.
Поскольку пример я составлял из под рабочей учетки - все конфиденциальные, не побоюсь этого слова, данные на картинках будут замазаны черным цветом. Другого цвета под рукой не оказалось.

Идем в настройки своего датасета BQ

Открываем настройки датасета в BigQuery

создаем новую таблицу: create table - upload - csv.

Создаем новую таблицу
Загружаем CSV файл в BQ

В целом, грузить данные через csv в целом можно, но есть ограничение на размер файла(100MB). Если файл больше то надо уже заморочаивтаьс яи грузить его через cloud storage.
Но если вам понадобится эти данные периодически обновлять, то такой вариант уже не подойдет, поскольку каждый раз придется пересоздавать таблицу и грузить данные заново, а это в общем-то так себе развлечение.
Поэтому есть второй более удобный метод, о котором я сам, к своему стыду, узнал недавно, потому что никогда не скролил ниже варианта загрузки через цсв.

Подключаем google sheets к bigquery

Процесс такой же, как и в случае, с CSV файлом, только в списке вариантов загрузки выбираем drive и вставляем ссылку на нашу гугл таблицу. Дополнительно можно указать диапазон который мы хотим импортировать, а также обязательно, как и в случае с csv, указываем что нам нужно пропустить первую строку в качестве заголовка и автоматически создать схему таблицы.

Подключаем Google Sheets к GBQ

Наша таблица импортировалась, но здесь как раз и есть один момент,на котором я застопорился и долго думал что моя таблица импортировалась неправильно. Импортированная таблица не импортируется целиком, в классическом понимании, как в случае с импортом через csv, а как бы связывается. Поэтому вы можетет увидеть, что размер вашей таблицы равен нулю. И сделать превью данных тоже не получится в таком случае.

Настройки импортированной таблицы.

Но если написать простой селект запрос то данные в результаты подтянутся.

Данные из гугл таблицы в результатах запроса бигквери

Как видим из запроса данные отобразились. Теперь вы можете джойнить эту таблицу к любым данным и ссылаться на нее в своих запросах как на обычную таблицу BQ, а ваш менеджер будет счастлив.

Главное напишите понятную инструкцию и следите чтобы данные в гугл таблицу вносили корректно. А то будет как у меня, когда в столбце для даты вместо нужного формата 2021-03-20 написали просто 20 марта. Зашибись, че.