Как с помощью языка R передавать данные из Facebook в Google BigQuery и строить на их основе отчеты в Google Data Studio
Введение
В этой статье речь пойдет о том, как с помощью языка R можно с легкостью загружать данные из Facebook, приводить их к нужному виду и передавать в Google BigQuery, затем строя информативные отчеты в Data Studio.
В целом, данный метод универсален для любого источника данных, который имеет свой API. Достаточно погрузившись в изучение R, вы сможете применять эти принципы для похожих задач, модифицируя и совершенствуя функционал.
Подготовка
Перед тем, как приступить к написанию кода программы в RStudio, необходимо выполнить несколько подготовительных этапов:
- создание проекта в Google Cloud Platform;
- авторизация в Facebook с нужного аккаунта;
- подключение необходимых библиотек в RStudio.
О том, как начать работать с RStudio, можно узнать более подробно из этой статьи.
Создание проекта в Google Cloud Platform
Для того, чтобы начать работать с GBQ, сначала необходимо обзавестись Google-аккаунтом, затем перейти по ссылке cloud.google.com и совершить ряд следующих действий:
- Нажимаем на кнопку «Get started for free».
- Указываем всю необходимую информацию в форме регистрации.
Данная процедура необходима для того, чтобы Google Cloud Platform смогла предоставить вам доступ к триал-версии с бонусными 300$ на ваш счет на период три месяца, чтобы вы могли протестировать все интересующие вас продукты. В процессе вас попросят указать номер кредитной карты, но не беспокойтесь — средства с вашей карты без подтверждения списаны не будут.
- После того, как все данные успешно внесены, вас попросят подтвердить указанную карту. Для этого нужно перейти, нажав на кнопку «Proceed to verification».
Затем загрузите указанные файлы (фото карты и фото паспорта владельца карты).
После успешной загрузки этих файлов вас перенаправит на следующую страницу.
- Теперь перезагружаем страницу из шага 3 и попадаем на вкладку с информацией о платежном профиле.
- Открываем меню и переходим на вкладку «Home».
- Теперь нужно открыть выпадающий список и нажать на кнопку «New project». Вы можете увидеть, что Cloud Platform уже создала для вас первый проект, но я создам новый для того, чтобы показать все шаги.
- Далее необходимо указать название проекта. Организацию добавлять необязательно и можно оставить поле со значением по умолчанию.
Будьте внимательны, поскольку идентификатор проекта после создания нельзя изменять!
- После создания проекта видим уведомление об успешности операции. Выбираем созданный проект.
- Видим, что проект в выпадающем списке поменялся на только что созданный. Теперь можем перейти на вкладку Google BigQuery и перейти в рабочее пространство SQL.
- Перейдя на страницу рабочего пространства SQL, видим следующую картину:
В данный момент наш проект находится в режиме так называемой “песочницы”. Это означает, что все таблицы в наших наборах данных имеют максимальное время жизни 60 дней, после чего они будут автоматически удалены. Но не переживайте, как только ваш платежный профиль пройдет верификацию, вы сможете перейти к полноценной работе, нажав на кнопку “Upgrade”:
- Теперь нужно создать набор данных (dataset), в который далее будем загружать таблицы с данными:
Указываем название для набора данных и выбираем сервер, на котором он будет хранится. Остальные настройки советую оставить по умолчанию:
По умолчанию GBQ автоматически определит наиболее оптимальное расположение сервера.
- После того, как набор данных создан, можем увидеть его в выпадающем списке проекта.
Можно считать, что первый этап подготовки пройден. Теперь перейдем к вопросу авторизации в Facebook.
Авторизация в Facebook
О том, как должен проходить процесс авторизации в Facebook со всеми подробностями можно узнать из этой статьи, здесь же я просто расскажу о ключевых моментах.
В первую очередь убедитесь в том, что профиль Facebook имеет все необходимые доступы к рекламным кабинетам, из которых вы хотите запросить данные.
Далее следует авторизоваться с вашего компьютера под этой учетной записью и получить токен, который понадобится для вызова API.
После этих операций можно приступать к работе внутри RStudio.
Подключение необходимых пакетов в RStudio
Если Вы еще не работали с R и RStudio — настоятельно рекомендую прочитать данную статью.
Итак, открываем новый файл в RStudio и начинаем устанавливать все необходимые пакеты. Нам понадобиться четыре библиотеки:
- rfacebookstat;
- bigrquery;
- dplyr;
- stringr.
Для их установки выполняем следующий код:
В процессе установки в консоле можем наблюдать сообщения про успешность операции:
Когда установлены все необходимые пакеты, нужно подключить четыре соответствующих библиотеки. Для этого выполняем следующий код:
После подключения библиотек приступаем к написанию кода нашей программы.
Для лучшего понимания поделим программу на несколько частей и поговорим о каждой отдельно:
- настройка пользовательских параметров;
- подключение к Facebook API;
- загрузка данных из Facebook и их форматирование;
- подключение к GBQ API;
- загрузка данных в GBQ.
Настройка пользовательских параметров
В этой части программы зададим определенные значения, которые часто будем использовать по ходу программы. Это нужно на случай корректировок. Например, вы захотите изменить диапазон дат: изменения вносим только в одном месте, а не везде, где эти значения используются. Это не обязательно, но упрощает нам работу.
Выглядит это так:
Подключение к Facebook API
Этот шаг подробно описан в статье про импорт расходов из Facebook в Google Analytics. Если коротко: вызываем функцию fbAuth() и получаем токен для работы с API.
Загрузка данных из Facebook и их форматирование
В пакете rfacebookstat существует довольно много полезных функций, которые позволяют загружать различные отчеты (о рекламных кампаниях, их расходах и т.п.). За каждый такой отчет отвечает вызов определенной функции из этого пакета. Подробнее о том, какие параметры нужно задавать функциям и в каком формате они предоставляют данные, можно узнать, выполнив простой запрос в консоле. Рассмотрим это на примере функции fbGetAccounts().
Как видим, после выполнения команды RStudio демонстрирует полную информацию об указанной функции.
Теперь вызовем функцию fbGetAccounts() и присвоим результат выполнения переменной my_accs.
Посмотрим на содержимое этой переменной, нажав на ее название в нашем окружении:
В этой переменной находится таблица, в которой приведена краткая полезная информация о доступных аккаунтах. Здесь нам интересно получить идентификатор нужного аккаунта (именно значение из колонки id., а не account_id).
Я продемонстрирую выгрузку таких данных на примере своего аккаунта. Для этого скопирую идентификатор и присвою его переменной my_acc. Данная переменная понадобится для вызова следующей функции.
Далее будем рассматривать загрузку данных с информацией о рекламных расходах. Для этого нужно вызвать функцию fbGetCostData() и присвоить результат ее выполнения переменной cost_data.
После выполнения данной функции можно увидеть, что переменная cost_data была добавлена в окружение и содержит определенный набор данных:
Казалось бы, что уже сейчас можно приступать к отправке данных в GBQ, но есть один нюанс. Сейчас имена столбцов в таблице cost_data имеют вид “ga:SomeData”. Такой формат не подходит, если мы хотим загрузить данные в GBQ, поскольку название столбцов должно быть написано слитно, например, SomeData или Some_Data. Поэтому слегка отформатируем имена столбцов, убрав ненужные нам “ga:”. С этим нам поможет пакет stringr. Подробно описывать выполняемый код я не буду, так как это выходит за рамки данной статьи. Если вы проделали все этапы так, как это указано выше, то достигнете нужного результата. Собственно сам код, который следует выполнить:
После выполнения получаем таблицу с нужным нам форматом.
Подключение к GBQ API и загрузка данных
Вот мы и приблизились к моменту загрузки данных в GBQ. Для отправки таблицы cost_data необходимо выполнить следующий код:
Функция bq_table() формирует список из значений, который с помощью конвейерного оператора будет передан в качестве значения параметра x функции bq_table_upload(). Конвейерный оператор нужен здесь только для упрощения кода. Подобный вариант тоже допустим:
В качестве значения project передаем идентификатор проекта GBQ. Значением параметра dataset служит название набора данных в этом проекте, а значение параметра table — это название таблицы в этом наборе данных.
Далее следует заполнить параметры функции bq_table_upload(). В параметр values передаем таблицу с данными cost_data, параметр create_disposition должен иметь значение “CREATE IF NEEDED” (если такой таблицы нет, то нужно ее создать), а параметр write_disposition должен иметь значение “WRITE_APPEND” (добавить данные к существующим).
В целом, это не исчерпывающий набор параметров, да и их значения могут меняться, в зависимости от целей. Подробнее об этом можно узнать из документации к соответствующему пакету.
Как только данный набор функций будет вызван, вас перенаправит в браузер для прохождения авторизации. Авторизуйтесь под нужным аккаунтом и дайте необходимые разрешения.
После этого в консоле вы можете увидеть предложение сохранить токен для дальнейшего использования. Рекомендую согласиться: в дальнейшем не придется проходить процесс авторизации повторно.
Теперь повторно выполните этот код и посмотрите в консоль. Если все выполнено правильно, то увидите соответствующее сообщение:
Осталось только проверить, все ли правильно передалось. Для этого перейдем в нужный проект и набор данных. Там видим только что созданную таблицу facebook_cost_data, которая содержит выгруженные из Facebook данные.
Построение отчетов в Data Studio
Для получения возможности построения отчетов внутри Data Studio нужно добавить в качестве источника данных конкретную таблицу GBQ. Для этого переходим в Data Studio и создаем новый отчет. Также можно добавить источник данных в уже существующий отчет.
Добавляем коннектор BigQuery и в нем выбираем нужную нам таблицу:
Вуаля! Получаем источник данных, на основе которого строим любые отчеты!