Как с помощью языка R передавать данные из Facebook в Google BigQuery и строить на их основе отчеты в Google Data Studio

932
10 мин.

Введение

В этой статье речь пойдет о том, как с помощью языка R можно с легкостью загружать данные из Facebook, приводить их к нужному виду и передавать в Google BigQuery, затем строя информативные отчеты в Data Studio.

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

Подготовка

Перед тем, как приступить к написанию кода программы в RStudio, необходимо выполнить несколько подготовительных этапов:

  • создание проекта в Google Cloud Platform;
  • авторизация в Facebook с нужного аккаунта;
  • подключение необходимых библиотек в RStudio.

О том, как начать работать с RStudio, можно узнать более подробно из этой статьи.

Создание проекта в Google Cloud Platform

Для того, чтобы начать работать с GBQ, сначала необходимо обзавестись Google-аккаунтом, затем перейти по ссылке cloud.google.com и совершить ряд следующих действий:

  1. Нажимаем на кнопку «Get started for free».
  1. Указываем всю необходимую информацию в форме регистрации.

Данная процедура необходима для того, чтобы Google Cloud Platform смогла предоставить вам доступ к триал-версии с бонусными 300$ на ваш счет на период три месяца, чтобы вы могли протестировать все интересующие вас продукты. В процессе вас попросят указать номер кредитной карты, но не беспокойтесь — средства с вашей карты без подтверждения списаны не будут.

  1. После того, как все данные успешно внесены, вас попросят подтвердить указанную карту. Для этого нужно перейти, нажав на кнопку «Proceed to verification».

Затем загрузите указанные файлы (фото карты и фото паспорта владельца карты).

После успешной загрузки этих файлов вас перенаправит на следующую страницу.

  1. Теперь перезагружаем страницу из шага 3 и попадаем на вкладку с информацией о платежном профиле.
  1. Открываем меню и переходим на вкладку «Home».
  1. Теперь нужно открыть выпадающий список и нажать на кнопку «New project». Вы можете увидеть, что Cloud Platform уже создала для вас первый проект, но я создам новый для того, чтобы показать все шаги.
  1. Далее необходимо указать название проекта. Организацию добавлять необязательно и можно оставить поле со значением по умолчанию.

Будьте внимательны, поскольку идентификатор проекта после создания нельзя изменять!

  1. После создания проекта видим уведомление об успешности операции. Выбираем созданный проект.
  1. Видим, что проект в выпадающем списке поменялся на только что созданный. Теперь можем перейти на вкладку Google BigQuery и перейти в рабочее пространство SQL.
  1. Перейдя на страницу рабочего пространства SQL, видим следующую картину:

В данный момент наш проект находится в режиме так называемой “песочницы”. Это означает, что все таблицы в наших наборах данных имеют максимальное время жизни 60 дней, после чего они будут автоматически удалены. Но не переживайте, как только ваш платежный профиль пройдет верификацию, вы сможете перейти к полноценной работе, нажав на кнопку “Upgrade”:

  1. Теперь нужно создать набор данных (dataset), в который далее будем загружать таблицы с данными:

Указываем название для набора данных и выбираем сервер, на котором он будет хранится. Остальные настройки советую оставить по умолчанию:

По умолчанию GBQ автоматически определит наиболее оптимальное расположение сервера.

  1. После того, как набор данных создан, можем увидеть его в выпадающем списке проекта.

Можно считать, что первый этап подготовки пройден. Теперь перейдем к вопросу авторизации в 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 и в нем выбираем нужную нам таблицу:

Вуаля! Получаем источник данных, на основе которого строим любые отчеты!

24 сентября 2021
5 / 5 (4 голоса)