The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.

2. Get Facebook Marketing Insight

Для загрузки статистических данных из рекламных аккаунтов Facebook в пакете rfacebookstat необходимо использовать функцию fbGetMarketingStat.

Аргументы функции fbGetMarketingStat

Функция имеет множество аргументов с помощью которых вы можете максимально точно обозначить формат получаемых из API Facebook данных.

Пример запроса статистики

library(rfacebookstat)

options(rfacebookstat.access_token = "ваш токен",
        rfacebookstat.accounts_id  = "act_000000000")

fb_data <- fbGetMarketingStat(
                  level              = "campaign",
                  fields             = "campaign_name,
                                        impressions,
                                        clicks,
                                        spend,
                                        actions",
                  date_start         = "2019-05-01",
                  date_stop          = "2019-05-10")

Выше приведён простейший способ загрузки статистики по показам, кликам, тратам и действиям в разрезе дней и рекламных кампаний. Использование опций rfacebookstat.access_token и rfacebookstat.accounts_id не является обязательным, но поможет вам избежать дублирования этих параметров в аргументах всех функций пакета, поэтому я рекомендую именно такой способ установки значений accout_id, access_token, business_id и api_version.

Учётные данные

С помощью аргументов username и token_path функция fbGetMarketingStat() определяет какие учётные данные ей необходимо использовать для запроса данных, и где эти учётные данные хранятся.

Более подробно об авторизации и этих аргументах написано в виньетке про авторизацию, открыть можно с помощью функции vignette('rfacebookstat-authorization', package = 'rfacebookstat').

Разбивки (breakdowns)

Разбивки помогают обогащать ваши данные за счёт дополнительных полей и группировок, на данный момент поддерживаются следующие разбивки:

Актуальный список группировок всегда можно найти в официальной документации API Facebook по ссылке.

library(rfacebookstat)

options(rfacebookstat.access_token = "ваш токен",
        rfacebookstat.accounts_id  = "act_000000000")

fb_data_breakdowns <- fbGetMarketingStat(
  level              = "campaign",
  fields             = "campaign_name,
                        impressions,
                        clicks,
                        spend,
                        actions",
  breakdowns         = "region",
  date_start         = "2019-05-01",
  date_stop          = "2019-05-10")

Разбивки по действиям (action_breakdowns)

Вы можете сгруппировать результаты в поле actions. Аргумент action_breakdowns позволяет применить указанные ниже разбивки.

library(rfacebookstat)

options(rfacebookstat.access_token = "ваш токен",
        rfacebookstat.accounts_id  = "act_000000000")

fb_data_action_breakdowns <- fbGetMarketingStat(
  level              = "campaign",
  fields             = "campaign_name,
                        impressions,
                        clicks,
                        spend,
                        actions",
  action_breakdowns  = "action_reaction",
  date_start         = "2019-05-01",
  date_stop          = "2019-05-10")

Описание полей возвращаемых в разбивке action_type

Применить одновременно несколько разбивок

Некоторые разбивки можно применять одновременно. Типы группирования, помеченные звездочкой (*), можно объединить с action_type, action_target_id и action_destination (название action_target_id).

Окна атрибуции

Количество дней между просмотром или нажатием рекламы и выполнением действия называется окном атрибуции. В функции fbGetMarketingStat() управление окнами атрибуции осуществляется с помощью аргумента attribution_window.

Действия с рекламой измеряются на основании кликов и просмотров:

По умолчанию окно атрибуции настроено на 1 день после просмотра и 28 дней после клика. Это означает, что вы видите действия, которые произошли в течение 1 дня после просмотра рекламы и в течение 28 дней после ее нажатия. Вы можете изменить окно атрибуции на 1, 7 или 28 дней после просмотра или нажатия рекламы.

Чтобы посмотреть все действия, связанные с рекламой, вы можете настроить атрибуцию как после просмотра, так и после клика на один и тот же период времени.

Например, чтобы узнать, сколько покупок было совершено после просмотра или клика по рекламе за последние 7 дней, выберите для окон атрибуции по просмотрам и кликам продолжительность attribution_window = c("7d_view", "7d_click").

Аргумент attribution_window принимает вектор состоящий из окон атрибуции по которым вы хотите получить данные, при этом значение поля по каждой модели атрибуции которое вы получаете в массиве actions будет выделено в отдельный столбец. Например если вы применяете атрибуции 7d_view и 7d_click то поле lead будет представлено в трёх столбцах: lead, lead_7d_view, lead_7d_click.

Возможные модели атрибуции: account_default, default, inline, 1d_view, 7d_view, 28d_view, 1d_click, 7d_click, 28d_click, 1d_view_1d_click, 7d_view_1d_click, 28d_view_1d_click, 28d_view_7d_click, 7d_view_7d_click, 28d_view_7d_click, 7d_view_28d_click, 28d_view_28d_click.

Пример использования окон атрибуции

library(rfacebookstat)

options(rfacebookstat.access_token = "ваш токен",
        rfacebookstat.accounts_id  = "act_000000000")

fb_data_action_breakdowns <- fbGetMarketingStat(
  level              = "campaign",
  fields             = "campaign_name,
                        impressions,
                        clicks,
                        spend,
                        actions",
  action_breakdowns  = "action_reaction",
  attribution_window = c('default', '1d_view', '28d_view', '28d_click'),
  date_start         = "2019-05-01",
  date_stop          = "2019-05-10")

Более подробно об окнах атрибуции в Facebook можно узнать по следующим ссылкам:

Фильтрация данных

Вы можете применять фильтры к запрашиваемым данным. Использовать для этого необходимо аргумент filtering. Указывать выражение для фильтрации ы можете в упрощённом формате или в виде JSON объектов, ниже я приведу пример использования обоих вариантов.

Для фильтрации вам необходимо указать поле по которому вы будете фильтровать данные, оператор и значение. Допустимые операторы для фильтрации: EQUAL, NOT_EQUAL, GREATER_THAN, GREATER_THAN_OR_EQUAL, LESS_THAN, LESS_THAN_OR_EQUAL, IN_RANGE, NOT_IN_RANGE, CONTAIN, NOT_CONTAIN, IN, NOT_IN, STARTS_WITH, ANY, ALL, AFTER, BEFORE, NONE

Пример фильтрации в упрощенном формате

library(rfacebookstat)

options(rfacebookstat.access_token = "ваш токен",
        rfacebookstat.accounts_id  = "act_000000000")
fb_data <- fbGetMarketingStat(
  level              = "campaign",
  fields             = "campaign_name,
                        impressions,
                        clicks,
                        spend,
                        actions",
  filtering          = "impressions LESS_THAN 5000",
  date_start         = "2019-05-01",
  date_stop          = "2019-05-10")

В приведённом примере мы указали фильтр impressions LESS_THAN 5000 и таким образом оставили строки в которых поле impressions имеет значение менее 5000.

Если вам необходимо использовать множественный оператор (IN_RANGE, NOT_IN_RANGE, IN, NOT_IN) то в упрошенном формате запись будет выглядеть так: "publisher_platform IN instagram,facebook". Важно не ставить проблемы между списком значений.

library(rfacebookstat)

options(rfacebookstat.access_token = "ваш токен",
        rfacebookstat.accounts_id  = "act_000000000")
fb_data <- fbGetMarketingStat(
  level              = "campaign",
  fields             = "campaign_name,
                        impressions,
                        clicks,
                        spend,
                        actions",
  filtering          = "publisher_platform IN instagram,facebook",
  breakdowns         = "publisher_platform",
  date_start         = "2019-05-01",
  date_stop          = "2019-05-10")

Если вы хотите применить несколько фильтров, то вы можете передать в аргумент filtering вектор из выражений, например: c("clicks LESS_THAN 500", "impressions GREATER_THAN 1000").

library(rfacebookstat)

options(rfacebookstat.access_token = "ваш токен",
        rfacebookstat.accounts_id  = "act_000000000")
fb_data <- fbGetMarketingStat(
  level              = "campaign",
  fields             = "campaign_name,
                        impressions,
                        clicks,
                        spend,
                        actions",
  filtering          = c("clicks LESS_THAN 500", "impressions GREATER_THAN 1000"),
  date_start         = "2019-05-01",
  date_stop          = "2019-05-10")

Пример фильтрации в JSON формате

Как я уже писал выше вы можете описывать фильтры в виде JSON объектов, но такая запись будет более громоздка. Давайте приведу вам аналогию с представленными выше фильтрами.

Упрощённый формат: "impressions LESS_THAN 5000"

JSON: "[{"field":"impressions","operator":"LESS_THAN","value":"5000"}]"


Упрощённый формат: "publisher_platform IN instagram,facebook"

JSON: [{"field":"publisher_platform","operator":"IN","value":["instagram","facebook"]}]


Упрощённый формат: c("clicks LESS_THAN 500", "impressions GREATER_THAN 1000")

JSON: [{"field":"clicks","operator":"LESS_THAN","value":"500"},{"field":"impressions","operator":"GREATER_THAN","value":"1000"}]

Лимиты API и аргумент request_speed

По использованию аргумента request_speed есть целая статья, но я всё же немного опишу зачем данный аргумент нужен.

В API Facebook на данный момент существует 2 уровня доступа к API (раздел в справке API Facebook):

По умолчанию все создаваемые вами приложения получают уровень “Разработка”. Данный уровень имеет серьёзные ограничения на количество отправляемых в API запросов. Функция fbGetMarketingStat при использовании аргумента interval равным "day" загружает данные по дням, и на каждый день отправляет отдельный запрос в API.

Так же отдельно разделяются запросы если вы загружаете данные сразу по несколько аккаунтам, таким образом если вы планируете загрузить данные с 1 января по 21 января по 3ём аккаунтам функция отправит (31 * 3) 93 запроса к API.

В случае если вы имеете стандартный доступ то для вас это не будет проблемой, и вы можете установить request_speed = "fast", но для приложений с уровнем доступа “Разработка” такой объём отправляемых запросов может выйти далеко за лимиты API, от части fbGetMarketingStat умеет обходить такие лимиты каждый раз уходя в бан при их превышении, но скорость загрузки данных при попадании в бан будет очень низкий, иногда бан может составлять 5 минут.

Поэтому если ваше приложение имеет уровень доступа “Разработке” при загрузке данных по дням за длительный период рекомендуется использовать request_speed = "slow". Если значение “slow” не помогает вы можете самостоятельно задавать паузу в секундах между запросами, например request_speed = 4 будет задавать 4 секундную паузу между отправкой запросов.

Для получения стандартного доступа требуется перейти в ваше приложение в раздел настроек API Marketing и отправить заявку на “Ads Management Standart Access”.

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.