Как развернуть Airbyte и подключить к нему Facebook API?
⏱ Время чтения текста – 13 минутВ этой статье мы покажем, как развернуть open-source сервис Airbyte на вашем компьютере и с его помощью подключиться к Facebook Marketing API.
Что такое Airbyte?
Airbyte — это платформа интеграции данных с открытым исходным кодом для создания ELT пайплайнов, которая помогает вам реплицировать данные в ваших хранилищах, озерах и базах данных. Кроме того, она имеет удобный интерфейс, который очень красиво оформлен (вы только посмотрите на эту осьминожку)!
Разворачиваем Airbyte
Установка Airbyte на машину выполняется достаточно просто. В этом можно убедиться, заглянув в официальную документацию. Для этого выполнить несколько шагов:
- Установить Docker (см. Инструкции) и убедиться, что у вас стоит последняя версия docker-compose.
- Выполнить следующие команды в терминале:
- git clone
- cd airbyte
- docker-compose up
Как только в выводе терминала появится баннер Airbyte, UI станет доступен по адресу http://localhost:8000.
Подключаем Facebook
С полной документацией по работе с Facebook Marketing из Airbyte можно ознакомиться по ссылке. Мы же дадим выжимку из нее. Итак, для того, чтобы подключить Facebook в Airbyte, надо учесть следующие условия:
- Наличие Facebook Ad Account ID (где его найти?)
- Наличие Facebook App с включенным Marketing API (подробнее)
- Наличие Facebook Marketing API Access Token (подробнее)
- Запросить увеличение лимита на количество запросов: Facebook сильно ограничивает токены API, сгенерированные из приложений Facebook с уровнем «Стандартный доступ» (по умолчанию для новых приложений именно такой уровень доступа), что делает невозможным использование токена для синхронизации с Airbyte. Вам нужно будет запросить апгрейд до расширенного доступа для вашего приложения со следующими разрешениями (подробнее):
- Ads Management Standard Access
- ads_read
- Ads_management
- Перед этим вам нужно будет пройти процесс проверки вашей компании (подробнее).
После этого можно подключить Facebook в Airbyte.
- Заходим в UI на вкладку Sources и нажимаем ‘+ new source’
- Выбираем в качестве источника Facebook Marketing и прописываем конфигурации подключения:
- Название источника, под которым он будет отображаться в Airbyte
- Facebook Ad Account ID
- Дата начала — с этого момента будут грузиться данные из Facebook (⚠️ВАЖНО: Данные по инсайтам можно получить только за последние 37 месяцев)
- Дата окончания — до этого момента будут грузиться данные из Facebook (можно оставить пустым, чтобы получать последние данные из аккаунта)
- Facebook Marketing API Access Token
- Также имеются несколько дополнительных конфигурационных опций:
- Включение удаленных данных Campaigns, Ads и AdSets
- Сохранение миниатюр изображений
- Настройка кастомных Insignts
- После заполнения полей нажимаем ‘Set up source’ и ждем, пока процесс подключения не завершится
- При необходимости настройки подключения к источнику можно поменять на его вкладке ‘Settings’
Может возникнуть ошибка в связи с тем, что версия фреймворка устарела. Тогда надо будет перейти в основную вкладку ‘Settings’ (шестеренка в левом нижнем углу), там выбрать ‘Sources’, в списке найти Facebook Marketing и нажать кнопку ‘Change’ (или нажать ‘Upgrade all’, чтобы загрузить все доступные обновления).
Подключаем хранилище данных
После того, как мы подключили Facebook Marketing, нам необходимо связать этот источник с нашим хранилищем данных.
- Нажимаем ‘add destination’ на вкладке с настроенным источником (см. пункт 4 предыдущего раздела) либо идем на вкладку ‘Destinations’ и там нажимаем ‘+ new destination’.
- Далее выбираем тип хранилища, с которым будем работать. Airbyte может подключаться к большому количеству популярных СУБД. Опишем необходимые шаги конфигурации на примере работы с PostgreSQL. Заполняем следующие поля:
- Название хранилища, под которым оно будет отображаться в Airbyte
- Хост
- Порт
- База данных
- Схема
- Пользователь
- Пароль
- Нужно ли использовать SSL
- Параметры SSH туннеля (опционально)
- После заполнения полей нажимаем ‘Set up destination’ и ждем, пока процесс подключения не завершится
- Если вы выполняли подключение к хранилищу отдельно с вкладки ‘Destinations’, то надо связать с ним источник, нажав на ‘add source’
- При необходимости настройки подключения к хранилищу можно поменять на его вкладке ‘Settings’
- Версию образа для работы с хранилищем можно обновить при необходимости (по аналогии с тем, что мы писали в конце предыдущего раздела)
Настраиваем связь источника и хранилища данных
После всех проделанных шагов у нас открывается вкладка ‘Set up connection’, на которой мы можем настроить то, как и какие данные мы будем грузить с помощью Airbyte:
- Как часто будет происходить загрузка
- Куда именно мы будем помещать данные в хранилище
- Какие данные из источника мы будем брать и каким образом (Full refresh | Increment, Overwrite | Append)
- Надо ли нормализовывать данные (сырые данные все равно останутся в хранилище)
- Настройка кастомных трансформаций (опционально)
После заполнения полей, нажимаем ‘Set up connection’. Далее откроется страница настроенного подключения, где мы можем наблюдать историю выгрузок данных, а также вносить изменения в установленную связь Источник-Хранилище.
Если нажать на Sync, то будут показаны логи исполнения.
Результаты
После того, как загрузка была успешно завершена, мы можем заглянуть в наше хранилище.
Сразу можно обратить внимание на количество сгенерированных таблиц.
Так как мы указали, что нам необходима нормализация данных, то у нас в результате получилось чуть меньше 400 таблиц для streams [activities, ‘ad_account’, ‘ad_creatives’, ‘ad_sets’, ‘ads’, ‘ads_insights’, ‘campaigns’], причем многие из них оказались пустыми (так сгенерировал Airbyte).
Сырые данные содержатся в таблицах с именами ‘_airbyte_raw_*’. В таких таблицах имеется всего 3 поля — ‘_airbyte_ab_id’, ‘_airbyte_data’ и ‘_airbyte_emmited_at’. Столбец ‘_airbyte_data’ имеет тип jsonb.
Пример для ‘_airbyte_raw_ads_insights’:
В процессе нормализации каждое поле из json выносится в отдельную колонку. Пример: часть списка колонок из таблицы ‘ads_insignts’:
После получения основной нормализованной таблицы для каждого stream создаются различные breakdowns, например, для тех же ‘ads_insights’: