Создаем простой ETL на Python часть 1.


В этой статье подробно рассмотрим процесс создания простейшего ETL-инструмента на Python, который будет запускаться по расписанию и копировать данные из облачной базы данных на Postgres в Google Sheets.




Сфера применения? Например, у вас агентство. И вы храните рабочую информацию о проектах в единой БД. Но заказчикам надо сбрасывать отчеты. Давать доступ к своей БД не вариант, а вот сбросить данные в Google Sheets и причем делать это регулярно - вполне себе решение.

Или, допустим, у вас работают парсеры, которые загружают собранную информацию в БД на облаке. Опять же, результаты парсинга надо предоставить заказчику, но доступ к БД давать не хочется. Выход - выгрузить результаты в Google Sheets и дать доступ к ним заказчику.


Настраиваем сервисный аккаунт.


Первый этап состоит в создании и настройки сервисного аккаунта  Google, который будет иметь доступ к и Sheets, и к вашей БД. Для этого вы должны предварительно обладать аккаунтом в Google Cloud Platform. Процесс регистрации в GCP я пропущу, т.к. он не является предметом этой статьи.

Зайдя в консоль GCP открываете список проектов и выбираете Создать новый проект. придумываете ему имя. Не забудьте переключиться в этот проект.





Дальше на боковой панели меню API и сервисы -> Библиотека. Переходим в строку поиска и ищем Sheets. Выбираем Sheets API и на следующем шаге нажимаем кнопку Включить.


Попадаете в консоль проекта и нажимаете Создать учетные данные и в следующем окне - Создать сервисный аккаунт.



Как видим, пока что у нас нет ни одного сервисного аккаунта. Нажимаем в верху еще раз Создать сервисный аккаунт.


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



Следующие два окна оставляем все по дефолту и нажимает Готово.



Мы вернулись в панель сервисных аккаунтов и теперь видим, что у нас появилась запись о новом сервисном аккаунте. Теперь нужно назначить ключи доступа. Ставим галочку напротив аккаунта и в меню справа выбираем создать ключ.


Жмем добавить ключ->Создать ключ.


Выбираем тип ключа JSON, Создать.


После этого json-файл скачается на ваш компьютер. Сохраните его.

Дальше может быть два варианта. Либо вы даете доступ сервисному аккаунту к Sheets своего Google-аккаунта, а затем просто шерите ссылку на итоговую таблицу заказчику.

Либо высылаете идентификатор сервисного аккаунта закачику и он дает ему доступ к его Google Sheets, а итоговую таблицу он уже шерит для вас. (В случае вопросов от заказчика, у вас все-равно должен быть к ней доступ)

Дальше я покажу первый вариант.

В Sheets создаем пустую таблицу/таблицы, в которую будут сбрасываться данные. Назначаем таблице имя. Имя копируем, т.к. потом его надо будет вставить в Python-скрипт.




Галочку Уведомлять пользователей можно не ставить. в конце жмем синюю кнопку

Открыть доступ. На этом все.


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
































Комментарии

Популярные сообщения из этого блога

Быстрый импорт в базу данных с помощью DBeaver

Jupyter-фишки, которые облегчат жизнь аналитику

Два способа загрузить свой датасет в Python

5 приемов при работе с модулем datetime в Python

Чистка и препроцессинг данных. Готовим датасет для ML.