Блог про интернет-маркетинг для бизнеса

Аналитика

Как перенести данные из ВКонтакте в Power BI

56
0
0
7

Несмотря на недавнюю блокировку соцсети в Индии, ВКонтакте продолжает оставаться огромным источником полезной информации и статистики. В этой статье я расскажу, как с помощью написанного мной программного пакета rvkstat и коннектора  R получить данные из API ВКонтакте в Microsoft Power BI.

Причем получить эти данные можно даже в странах, где сама соцсеть официально заблокирована.

Установка необходимого программного обеспечения

Скачайте и установите актуальную версию языка R и Power BI. Это, пожалуй, самая простая часть работы, как R так и Power BI при установке не требуют от вас никаких дополнительных манипуляций и настройки — просто кликайте по кнопкам Next и Ok.

Как создать Standalone-приложение ВКонтакте

Для работы с API Вконтакте необходимо создать Standalone-приложение, непосредственно в интерфейсе социальной сети.

Для создания приложения перейдите по этой ссылке и выберите Standalone-приложение.

Для создания приложения перейдите по этой ссылке и выберите Standalone-приложение

Перейдите в настройки только что созданного приложения и заполните следующие поля следующим образом:

Адрес сайта: https://selesnow.github.io/rvkstat/getCode/get_code.html
Базовый домен: selesnow.github.io
Доверенные redirect URI: https://selesnow.github.io/rvkstat/getCode/get_code.html
https://selesnow.github.io/rvkstat/getCode/get_token.html

Далее для получения токена разработчика вам понадобится ID и засекреченный ключ приложения.

Доверенные редирект URL

Устанавливаем пакет rvkstat

Пакет rvkstat является R-клиентом для работы с API ВКонтакте. Его можно установить из моего репозитория на GitHub с помощью приведенного ниже кода в R.

if(!"devtools" %in% installed.packages()[,1]){install.packages("devtools")}
devtools::install_github('selesnow/rvkstat')

Если на данном этапе вы всё сделали правильно, в R-консоли увидите сообщение о том, что пакет rvkstat успешно установлен:

Если на данном этапе вы всё сделали правильно, в R-консоли увидите сообщение о том, что пакет rvkstat успешно установлен

Получаем токен разработчика

Следующий шаг — получение токена доступа к API ВКонтакте. Для этого необходимо подключить пакет rvkstat и с помощью функции vkAuth получить токен разработчика.

Для этого вставьте в R-консоль следующий код:

myCredential <- vkAuth(app_id = <ID Вашего Приложения>, app_secret = <Защищённый Ключ Вашего Приложения>)

После запуска функции откроется окно браузера, в котором необходимо предоставить приложению все необходимые для работы разрешения:

Нажмите «Разрешить»

Затем откроется окно браузера, в котором будет ваш код доступа. Вам необходимо скопировать его и вставить в R-консоль в ответ на запрос «Enter code from URL:».

После чего откроется окно браузера, в котором будет ваш код доступа

Вам необходимо скопировать его и вставить в R-консоль в ответ на запрос

После этого в вашем рабочем окружении будет создан объект myCredential, именно в нём теперь хранится токен доступа к API.

Посмотреть его можно с помощью кода:

myCredential$access_token

Для удобства скопируйте из консоли полученный токен в блокнот.

Для удобства скопируйте из консоли полученный токен в блокнот

Как получить данные из рекламного кабинета ВКонтакте в Power BI

На этом шаге можно смело закрывать R-консоль и открывать Power BI. Для загрузки данных жмите на «Get Data».

На этом шаге можно смело закрывать R-консоль и открывать Power BI. Для загрузки данных жмите на «Get Data»

В открывшемся диалоговом окне переходим в группу коннекторов «Other», выбирайте «R script» и нажимайте «Connect».

В открывшемся диалоговом окне переходим в группу коннекторов «Other», выбирайте «R script» и нажимайте «Connect»

Далее в диалоговое окно «R Script» вставьте R-код, подставив в аргументы функций свои значения.

#Подключаем пакет
library(rvkstat)

##Получаем список рекламных кампаний
camp <- vkGetAdCampaigns(account_id = <id вашего рекламного кабинета>,
                        access_token = <токен разработчика, полученный на прошлом шаге>)

##Получаем статистику по рекламным кампаниям по дням
vk_stat_by_campaign <- vkGetAdStatistics(account_id = <id вашего рекламного кабинета>,
                                        ids_type = "campaign",
                                        ids = camp$id ,
                                        period = "day",
                                        date_from = "2010-01-01",
                                        date_to =Sys.Date(),
                                        access_token = <токен разработчика, полученный на прошлом шаге>)

Далее в диалоговое окно «R Script» вставьте R-код, подставив в аргументы функций свои значения

Если вы верно указали значения для всех аргументов функций, откроется диалоговое окно «Navigator», в котором можно выбрать две таблицы:

  • camp — справочник рекламных кампаний;
  • vk_stat_by_camp — статистика по рекламным кампаниям.

Если вы верно указали значения для всех аргументов функций, откроется диалоговое окно «Navigator», в котором можно выбрать две таблицы

После этого в Power BI будут загружены обе таблицы, и между таблицами будет установлена связь camp.id = vk_stat_by_camp.id.

Чтобы получить статистику в разрезе рекламных объявлений, необходимо в аргументе ids_type указать значение «ad» и в аргумент ids передать номера объявлений.

Например, можете воспользоваться следующим кодом:

##Подключаем пакет
library(rvkstat)
## Получаем список рекламных кампаний
ads <- vkGetAds(account_id = account_id, access_token = my_tok$access_token)
## Получаем статистику по объявлениям
vk_stat_by_ads <- vkGetAdStatistics(account_id = 1,
                                   ids_type = "ad",
                                   ids = ads$id ,
                                   period = "month",
                                   date_from = "2010-01-01",
                                   date_to =Sys.Date(),
                                   access_token = <токен разработчика полученный на прошлом шаге>))

Для загрузки общей статистики по рекламному кабинету необходимо передать в аргумент ids_type значение «office», а в аргумент ids передать номер рекламного кабинета.

По указанному выше примеру можно получить и другую статистику из рекламного кабинета и сообществ ВКонтакте.

Ловите список доступных функций для загрузки статистики из рекламного кабинета:

  • vkGetAdCategories — возможные тематики рекламных объявлений и их категорий;
  • vkGetAdAccounts — список доступных рекламных кабинетов;
  • vkGetAdClients — список клиентов из агентского аккаунта;
  • vkGetAds — список объявлений;
  • vkGetAdCampaigns — список рекламных кампаний;
  • vkGetAdStatistics — статистика показателей эффективности по рекламным объявлениям, кампаниям, клиентам или всему кабинету;
  • vkGetAdCityStats — статистика охвата аудитории по рекламным кампаниям или объявления в разрезе городов;
  • vkGetAdGenderStats — статистика охвата аудитории по рекламным кампаниям или объявления в разрезе пола;
  • vkGetAdAgeStats — статистика охвата аудитории по рекламным кампаниям или объявлениям в разрезе возраста;
  • vkGetAdGenderAgeStats — статистика охвата аудитории по рекламным кампаниям или объявлениям в разрезе пола и возраста;
  • vkGetAdBudget — остаток средств из рекламного кабинета;
  • vkGetAdPostsReach — подробная статистика по охвату рекламных записей из объявлений и кампаний для продвижения записей сообщества.

Подробную справку с примерами кода и полным описанием полей, которые будут загружены в результате работы функции в пакете rvkstat, можно получить с помощью команды help в R-консоли:

help("vkGetAdStatistics")

Полный список функций можно получить с помощью команды help(package  = "rvkstat"), либо перейдя в ReadMe репозитория пакета по ссылке.

Как построить визуализацию в Power BI

После загрузки данных в Power BI будет создано две таблицы:

  • camp — справочник рекламных кампаний;
  • vk_stat_by_campaign — статистика по рекламным кампаниям.

Между кампаниями будет автоматически создана связь по полям id.

На данном шаге данные уже загружены в Power BI, вам остаётся только построить нужные графики и таблицы

Остаётся только построить нужные графики и таблицы.

остаётся только построить нужные графики и таблицы

Выводы

ВКонтакте — одна из самых популярных социальных сетей в СНГ, а Power BI одна из самых популярных в мире BI-платформ. Связав эти инструменты, вы легко построите удобные дашборды и проанализируете свои рекламные кампании и объявления.

Что для этого нужно:

  1. Скачать и установить актуальную версию языка R.
  2. Скачать и установить актуальную версию Microsoft Power BI.
  3. Создать Standalone-приложение ВКонтакте.
  4. Установить пакет rvkstat.
  5. Получить токен для доступа к API ВКонтакте.
  6. С помощью функций доступных в пакете rvkstat написать код для загрузки данных в Power BI.
  7. Построить удобный и информативный dashboard.
Обнаружили ошибку? Выделите ее и нажмите Ctrl + Enter.

Комментарии (16)

  1. 1
    14 дней назад

    Добрый день. Заметил расхождение в кликах между используемым в пакете методом ads.getStatistics и статистикой в рекламном кабинете. Написал в поддержку в вк, вот ответ:

    Сейчас метод ads.getStatistics не выгружает клики по промопостам, возвращает "0". Планируется доработать данный метод. Мы передали информацию разработчикам. Спасибо!

    Так что имейте в виду

  2. 0
    20 дней назад

    Алексей, как всегда, всё мега-полезно. Спасибо!

    Но столкнулся с такой ошибкой:

    Error in paste0("https://oauth.vk.com/access_token?client_id=", app_id,  :   object 'tLekc77RAXqe9DjN63cw' not found


    Код подтверждения не подходит. 


    (работаю из Украины, но прокси подключил)

    • 0
      Игорь Мальцев
      20 дней назад

      Добрый день!

      Рад что материал был вам полезен.

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

      Что бы я мог вам помочь, прикрепите сюда код, который возвращает ошибку.

      • 0
        Алексей Селезнёв
        14 дней назад

        Алексей, спасибо! Проблема действительно была в отсутствии кавычек.

        Но теперь есть другая проблема:

        Error in curl::curl_fetch_memory(url, handle = handle) : 

          Timeout was reached: Operation timed out after 10000 milliseconds with 0 out of 0 bytes received


        Пользуюсь Вашим прокси. 

        • 0
          Игорь Мальцев
          13 дней назад

          Связано с тем, что пакет getProxy использует бесплатные прокси, а они иногда дают сбой.


          Если такая ошибка появляется пробуйте остановить прокси через getProxy(action = "stop") и опять запустить получив новый IP и порт, используйте следующие фильтры:


          getProxy(port = "3128", country = "RU", supportsHttps = TRUE, action = "start")
  3. 0
    23 дня назад
    Классный пакет, спасибо!  
  4. 0
    24 дня назад

    делаю чуть проще. не задаю список ad_id, только id кабинета. запускаю скрипт на Python. получаю сразу детализацию до объявлений (в том числе и боковик со вступлениями, он как раз на скрине)


    jupiter

    выгружаю в csv и уже его подтягиваю в Power Bi. Это если стоит задача скрестить с метрикой и достижением целей. Если такой задачи нет, то csv самодостаточна для анализа и дальнейшего ведения рекламной кампании на стороне Вк. 

    • 1
      Eugeny Vershovsky
      23 дня назад
      Субъективное "проще". В случае с R скриптом идет прямая загрузка в BI, в вашем случае -  лишний шаг с выгрузкой в csv или БД. В лучшем случае 1 лишний шаг, если настроена выгрузка csv по крону в ондрайв и синхронизация данных в BI из ондрайв. С другой стороны, таким способом(.csv) можно выгружать всё не только в Power BI, но и в Data Studio, для нормальной визуализации данных.
      • 0
        Definitely Not
        23 дня назад

        Согласен. Решение может не самое простое, и слишком "в лоб". У пакета rvkstat настройка гибче и потенциал больше.

        Я ведь когда писал скрипт год назад, про Power Bi даже не слышал еще. И требовалась подмога конкретно в рамках таргета ВК. 

        Со временем, когда дорос до омниканала весь зоопарк данных стало неудобно скрещивать. Захотелось интеграций. OWOX, Data Studio. Hiconversion для небольших проектов нерационально заводить. Другое дело Power BI. А т.к. уже была готова утилита экспорта в csv, то не стал переписывать, а просто брал более удобные выгрузки из ВК (т.к. стандартный экспорт в csv из ВК кошмарный и неполный). 

    • 0
      Eugeny Vershovsky
      24 дня назад

      Вам удобней сначала грузить в csv, а потом в Power BI, как мне кажется, в таком случае уже лучше из API не в csv а в БД.


      По сути, с помощью rvkstat вы тоже можете не задавать список id объявлений, он же автоматом подтянется с помощью функции vkGetAds, и всегда будет актуальным.


      Просто, чем больше шагов по перекачки данных, тем больше вероятность по пути эти данные потерять, ну или больше вероятность того, что где-то выбьет ошибка.


      Python скрит вы вручную запускаете, или он по расписанию сам обновляет csv?

      • 0
        Алексей Селезнёв
        23 дня назад

        Можно и в бд. 

        Изначальный смысл был в том чтобы автоматизировать часть вычислений при проведении тестовой рекламной кампании. Тест разбит на этапы. Проверка креативов в боковике. Проверка сегментов. Тест промо постов и прочее. 

        На каждом этапе нужно иметь исчерпывающую инфу по дальнейшим действиям. Поэтому вручную и поэтому csv. Т.е. как только этап завершен, данные в таблицу (копию в отчет) и готовим следующий этап. 

        Цели сразу лить в Power Bi не было. Она позже появилась когда встала необходимость с целями по метрике все это вязать. Пока просто обновляю csv (стата из Вк и из метрики), а в Power Bi уже связями получаю дашборд. 

  5. 1
    27 дней назад
    Отличная статья, как всегда

Чтобы оставить комментарий, необходимо авторизироваться

Подписаться

на самую полезную рассылку по интернет-маркетингу

Самое

обсуждаемое популярное читаемое