Як за допомогою мови R передавати дані з Facebook в Google BigQuery і будувати на їх основі звіти в Google Data Studio

1084
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 і в ньому вибираємо потрібну нам таблицю:

Вуаля! Отримуємо джерело даних, на основі якого будуємо будь-які звіти!

23 вересня 2021
5 / 5 (4 голоса)