Для загрузки статистических данных из рекламных аккаунтов Facebook в пакете rfacebookstat
необходимо использовать функцию fbGetMarketingStat
.
fbGetMarketingStat
Функция имеет множество аргументов с помощью которых вы можете максимально точно обозначить формат получаемых из API Facebook данных.
act_
, вы можете указать вектор из ID аккаунтов если требуется загрузить данные из набора аккаунтов. По умолчанию запрашивает значение опции rfacebookstat.accounts_id.action_report_time = "impression"
, вы увидите конверсию 1 января. Когда вы запросите API с помощью action_report_time = "conversion"
, вы увидите преобразование 2 января.fbGetToken
, по умолчанию запрашивается значение опции. rfacebookstat.access_tokenlibrary(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')
.
Разбивки помогают обогащать ваши данные за счёт дополнительных полей и группировок, на данный момент поддерживаются следующие разбивки:
Актуальный список группировок всегда можно найти в официальной документации 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")
Вы можете сгруппировать результаты в поле 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_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 объектов, но такая запись будет более громоздка. Давайте приведу вам аналогию с представленными выше фильтрами.
Упрощённый формат: "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"}]
По использованию аргумента 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”.