«Металл профиль» — как мы запустили кастомный коннектор для загрузки данных из API Google ***ytics в Microsoft SQL Server

Расскажу, как с помощью инструментов веб-аналитики мы получили расширенные данные о посещениях сайта для нашего клиента — компании «Металл профиль», производителя тонколистовых кровельных и стеновых материалов на территории России и СНГ.
Задача
Большая часть данных клиента уже собиралась в развернутом на базе Microsoft SQL Server хранилище. Наша задача — расширить эти данные на основе информации о посещениях сайта, полученной из API Google ***ytics.То есть необходимо разработать инструмент, с помощью которого «Металл профиль» мог бы отправлять любое количество пользовательских запросов к API Google ***ytics. И не просто отправлять, а делать это с использованием любых параметров и показателей, которые возможно запрашивать в рамках одного запроса. А затем — записывать полученные данные в MS SQL.
Это решение помогает обогатить внутренние данные из базы данных заказчика (в том числе о продажах) данными из Google ***ytics о поведении пользователей сайта. В первую очередь это нужно, чтобы увидеть полноценную картину оффлайн- и онлайн-заказов.
Это только один из примеров использования коннектора. Финальный результат кастомизированной веб-аналитики зависит от конкретных пожеланий клиента и четкого технического задания.
API периодически дает сбои, поэтому дополнительно нужна проверка наличия данных за прошлый период. Для каждого запроса период проверки наличия данных важно задавать индивидуально. Также в каждом запросе индивидуально нужно уметь указывать представление Google ***ytics, из которого требуется получить данные.
Данные за текущий день необходимо обновлять раз в час. Утром необходимо обновить данные за предыдущий день и проверить наличие данных за указанный под каждый запрос период. При необходимости — загрузить данные (если они отсутствуют за какой-либо из прошедших дней).
Инструменты
Язык R в веб-аналитике и интернет-маркетинге — интервью с Алексеем Селезневым Коннектор, разработанный под решение поставленной задачи, полностью написан на
- google***yticsR — интерфейс для работы с API Google ***ytics;
- odbc — подключение к Microsoft SQL Server через ODBC интерфейс;
- jsonlite — чтение JSON-структур;
- dplyr — манипуляция с данными.
Схема работы коннектора ga2mssql
- В R загружаются настройки коннектора из файла конфигурации, который содержит описание всех запросов и других требуемых настроек в JSON-структуре.
- По очереди каждый запрос отправляется в API Google ***ytics. Полученный результат дополнительно обpaбатывается в R.
- Полученные данные передаются в Microsoft SQL Server.
Настройка коннектора
В коннекторе ga2mssql нет графического пользовательского интерфейса. Для настройки и управления загрузкой с его помощью изначально необходимо внести все настройки в файл конфигурации. У файла конфигурации такая JSON-структура:
{ \"mssql_con\": { \"Driver\": \"SQL Server\", \"Server\": \"localhost\", \"Database\": \"my_database_name\", \"UID\": \"my_username\", \"PWD\": \"my_password\", \"Port\": 1433 }, \"google_***ytics_con\": { \"googleAuthR.client_id\": \"000000000000-xxxxxxxxxxxxxxxxx.apps.googleusercontent.com\", \"googleAuthR.client_secret\": \"xxxxxxxxxxxxxxxxxxxxx\", \"googleAuthR.scopes.selected\": [\"https://www.googleapis.com/auth/***ytics.edit\", \"https://www.googleapis.com/auth/***ytics\"] }, \"google_***ytics_report\": [ { \"days\": 15, \"ms_table\": \"table_1\", \"view_id\": \"ga:0000000000\", \"dimensions\": [\"ga:channelGrouping\", \"ga:day\", \"ga:date\", \"ga:region\", \"ga:country\", \"ga:medium\"], \"metrics\": [\"ga:sessions\", \"ga:bounceRate\", \"ga:hits\", \"ga:uniquePageviews\", \"ga:timeOnPage\", \"ga:totalEvents\", \"ga:uniqueEvents\", \"ga:transactions\", \"ga:itemQuantity\", \"ga:quantityAddedToCart\", \"ga:quantityRemovedFromCart\", \"ga:itemRevenue\", \"ga:totalValue\", \"ga:users\", \"ga:newUsers\", \"ga:bounces\", \"ga:sessionDuration\", \"ga:avgSessionDuration\", \"ga:transactionsPerSession\", \"ga:transactionRevenue\", \"ga:revenuePerTransaction\", \"ga:transactionRevenuePerSession\", \"ga:uniquePurchases\", \"ga:revenuePerItem\", \"ga:itemsPerPurchase\", \"ga:productAddsToCart\", \"ga:productCheckouts\", \"ga:quantityCheckedOut\", \"ga:refundAmount\", \"ga:revenuePerUser\", \"ga:totalRefunds\", \"ga:transactionsPerUser\"] }, { \"days\": 7, \"ms_table\": \"table_2\", \"view_id\": \"ga:00000000000\", \"dimensions\": [\"ga:channelGrouping\", \"ga:date\", \"ga:source\", \"ga:campaign\", \"ga:sessionDurationBucket\"], \"metrics\": [\"ga:sessions\", \"ga:bounceRate\", \"ga:hits\", \"ga:uniquePageviews\", \"ga:timeOnPage\", \"ga:totalEvents\", \"ga:uniqueEvents\", \"ga:itemQuantity\", \"ga:quantityAddedToCart\", \"ga:quantityRemovedFromCart\", \"ga:itemRevenue\", \"ga:users\", \"ga:newUsers\", \"ga:bounces\", \"ga:sessionDuration\", \"ga:avgSessionDuration\", \"ga:uniquePurchases\", \"ga:revenuePerItem\", \"ga:itemsPerPurchase\", \"ga:productAddsToCart\", \"ga:productCheckouts\", \"ga:quantityCheckedOut\"] }, { \"days\": 15, \"ms_table\": \"table_3\", \"view_id\": \"ga:000000000\", \"dimensions\": [\"ga:date\", \"ga:source\", \"ga:sessionDurationBucket\"], \"metrics\": [\"ga:pageLoadTime\", \"ga:bounceRate\", \"ga:transactions\", \"ga:users\", \"ga:transactionsPerSession\", \"ga:transactionRevenue\", \"ga:revenuePerTransaction\", \"ga:transactionRevenuePerSession\", \"ga:refundAmount\", \"ga:revenuePerUser\", \"ga:totalRefunds\", \"ga:transactionsPerUser\"] }, { \"days\": 15, \"ms_table\": \"table_4\", \"view_id\": \"ga:00000000\", \"dimensions\": [\"ga:date\"], \"metrics\": [\"ga:pageLoadTime\"] } ]}Описание всех узлов файла конфигурации:
mssql_con — параметры подключения к Microsoft SQL Server;
- PWD — пароль пользователя;
- Database — имя базы данных;
- Driver — название ODBC-драйвера (посмотреть название можно в диспетчере ODBC-источников данных) ;
- Server — IP сервера, на котором развернут SQL Server;
- UID — имя пользователя;
- Port — порт подключения;
google_***ytics_con — учетные данные приложения в Google Cloud Console;
google_***ytics_report — описание запросов к API Google ***ytics (количество запросов не ограничено)
- dimensions — параметры, запрашиваемые в запросе. Можно указывать до 7 параметров в одном запросе. При этом необходимо предварительно проверить сочетание всех параметров между собой и выбранными показателями. Для проверки используйте специальный инструмент от Google. Среди запрашиваемых параметров обязательно должен присутствовать ga:date;
- ms_table — название таблицы, в которую будут записаны данные по запросу;
- days — количество дней, за который необходимо проверять наличие данных в базе;
- view_id — ID представления в Google ***ytics, из которого будут запрашиваться данные;
- metrics — набор показателей, которые вы хотите получить из Google ***ytics. Необходимо указать как минимум одну метрику в запросе. При этом ограничения на их максимальное количество нет. Все запрашиваемые показатели должны сочетаться между собой и со всеми указанными параметрами. Проверить это можно с помощью специального инструмента от Google.
Добавлять новые запросы необходимо в узел google_***ytics_report, взяв за основу описанную выше структуру..
Состав коннектора ga2mssql
Коннектор состоит из архива файлов:
- GA2MSSQL.bat — запускной файл коннектора для сбора и проверки данных за прошлый период;
- GA2MSSQL_today.bat — запускной файл коннектора для сбора данных за текущий день;
- config.json — файл конфигурации и управления коннектором;
- package_installer.bat — файл для установки необходимых пакетов;
- auth.rds — файл для хранения учетных данных для доступа к Google ***ytics;
- ga2mssql_scr.R — код коннектора для загрузки и проверки наличия данных за прошлый период;
- ga2mssql_scr.Rout — лог последнего запуска скрипта ga2mssql_scr.R;
- ga2mssql_today_scr.R — код коннектора для загрузки и проверки наличия данных за текущий день;
- ga2mssql_today_scr.Rout — лог последнего запуска скрипта ga2mssql_today_scr.R.
Установка и настройка расписания сбора данных через коннектор
Коннектор ga2mssql — кроссплатформенный. Он будет работать на Windows, Unix и MacOS и других операционных системах.
В нашем случае коннектор установили на Windows Server.
Для установки коннектора на Windows нужно:
Язык R в интернет-маркетинге — дайджест полезных публикаций Установить язык
R. - Прописать в переменную окружения PATH путь к папке bin (в директорию, куда был установлен Язык R). По умолчанию для версии R 3.6.1 путь будет «C:\Program Files\R\R-3.6.1\bin».
- Распаковать архив с коннектором ga2mssql.zip в корень диска C. Путь к коннектору: «C:\ga2mssql».
- Перед настройкой коннектора запустить от имени администратора файл package_installer.bat для установки требуемых пакетов.
- Предоставить пользователю, указанному в файле конфигурации в узле mssql_con:UID в Microsoft SQL Server, права на запись и редактирование данных, а также на создания таблиц.
Далее в планировщике заданий Windows необходимо создать задачи:
- ежедневный запуск файла GA2MSSQL.bat для сбора данных за прошлый период;
- ежечасный запуск файла GA2MSSQL_today.bat для обновления данных за текущий день.
Комментарий клиента
Анастасия Чистова, ведущий менеджер-аналитик в компании «Металл профиль»Запуск коннектора мы встроили в общее расписание заданий MSSQL с запуском ежечасно для получения актуальной информации и раз в день. На протяжении двух недель тестирования коннектор отработал без сбоев и обеспечил загрузку полного объема данных, определенных настроенным представлением. Также мы настроили дополнительные запросы данных Google ***ytics по трафику — благодаря структуре коннектора это выполнено достаточно гибко.
Выводы
Существуют готовые решения по сбору данных из API Google ***ytics в Microsoft SQL Server, но их стоимость достаточно высокая. Как правило, нужны регулярные оплаты подписки в течении всего периода использования.
Преимущества коннектора ga2mssql:
- Вы самостоятельно задаете расписание обновления данных.
- Можно задать любое количество собственных, пользовательских запросов в API Google ***ytics.
- Коннектор обходит ограничение в 10 показателей на 1 запрос к API.
- ga2mssql — кроссплатформенный, разница состоит только в настройке расписания запуска.
- Достаточно легко переключить коннектор ga2mssql на работу с любой другой базой данных, включая MySQL, PostgreSQL, BigQuery, ClickHouse и другие.
Хочу быстро найти клиентов онлайн
Комментарии:
Самопомощь по тревоге во время карантина и экономического кризиса...
16 07 2026 19:38:49
О неправильных тpaктовках отчета по времени загрузки страниц сайта в ***ytics...
15 07 2026 2:20:34
Как добиться эффективности и самоорганизации. Читайте о системе тимлида Netpeak Андрея Коваля....
14 07 2026 5:29:14
Метод настройки с помощью Google Tag Manager. Мануал с подробным описанием каждого шага — показываем на примере, как отслеживать веб-конверсии в рекламных кампаниях LinkedIn. Узнать больше!...
13 07 2026 6:34:11
Как получить трафик из песочниц контента в популярных изданиях....
12 07 2026 0:42:46
Узнай, как бэкофис группы помогает развиваться компаниям, и выиграй iPhone — подбери крутое название для нашей группы....
11 07 2026 0:40:11
Цели у личных сайтов могут быть разные, но в первую очередь они помогают рассказать историю о специалисте...
10 07 2026 22:24:52
Всё о метриках загрузки сайта. Как проверить и отслеживать реальную скорость загрузки сайта и почему нельзя доверять показателям Pagespeed Insights....
09 07 2026 13:59:59
Создатели алгоритмов соцсетей используют слабые места человеческого мозга. Случайно или намеренно, но они это делают. Как нам с этим жить?...
08 07 2026 11:14:10
Почему лендинги на Тильде выгодны бизнесу, какие задачи он решает, о форматах работы по услуге, детально о ее составе и спецпредложениях от Netpeak и наших партнеров по настройке контекстной рекламы, сервисов на лендинге и даже промокод на скидку Yagla...
07 07 2026 22:45:58
Если хотите, чтобы кампании в контекстно-медийной сети работали эффективно, следует очистить площадки и ввести это в привычку...
06 07 2026 19:21:21
Ссылка с сайта с высоким тИЦ уже не считается качественной. Хороший донор вычисляется по комплексу факторов. Большую часть работы придется делать вручную. Важно найти отличный сайт, с огромным количеством интересного контента, оцененного по достоинству читателями, и гармонично туда вписать свою статью со ссылкой...
05 07 2026 20:21:13
Дайджест-путеводитель по серии постов о работе с редакторами электронных таблиц для PPC-специалистов....
04 07 2026 6:50:25
При работе с рекламным аккаунтом приходится вносить много однотипных изменений. Рассказываем, как сделать это быстро....
03 07 2026 19:55:18
Как улучшить конверсию сайта: идеи для маркетологов...
02 07 2026 0:55:55
Артем Шевченко (Epicentr), Михаил Рогальский (Monobank), Максим Дмитров (BSH Hausgeräte), Андрей Чумаченко (Netpeak) и другие участники конференции 8Р о том, как они рассчитывают инвестиции в интернет-маркетинг....
01 07 2026 2:34:34
Что мы узнали после 19 миллионов показов рекламных объявлений по разным спискам ремаркетинга....
30 06 2026 5:42:56
Что нужно учесть при создании баннеров для разных аудиторий...
29 06 2026 21:59:34
Аналитик Алексей Селезнев описал простой алогритм прогнозирования поисковой активности пользователей в Яндексе....
28 06 2026 16:12:53
Быстрый инструмент для повышения CTR — дополнительные ссылки Google Рекламы...
27 06 2026 3:46:18
5 примеров маркетингового троллинга. Сатира, ирония, пародия — все эти приемы в рекламе помогают брендам выделиться среди конкурентов. Если их правильно использовать, конечно, это отличный способ привлечь клиентов и создать запоминающийся образ бренда...
26 06 2026 8:38:40
Как владельцу стартапа пробиться сквозь сотни ежедневных сообщений, которые получает инвестор, создать эффективную цепочку писем и быть замеченным...
25 06 2026 18:51:40
Динамический ремаркетинг — один из самых эффективных способов продаж для любой группы товаров. В этой статье мы поделимся тонкостями технической подготовки к запуску динамического ремаркетинга в Facebook....
24 06 2026 2:15:36
Наука перехода — понятие краулинга (crawling, сканирование) сайта и принципа его работы. Виды поисковых роботов и способы их управления и другие полезные фишки в рубрике Азбука SEO на Netpeak Blog...
23 06 2026 13:49:25
Данные по 42,5 млн кликов в 25 тематиках и 391 городу...
22 06 2026 3:41:13
Советы бизнесу от зрителей Big Money и Артема Бородатюка. Предлагаем 11 универсальных, но простых и понятных идей....
21 06 2026 12:14:45
Как создать онлайн кампанию по продвижению мобильного приложения с максимальной отдачей....
20 06 2026 13:14:40
Оплата покупок в Facebook и Instagram через платежные ссылки...
19 06 2026 10:23:56
Расскажем про ошибки интернет-магазинов, которые трудно найти соответствующими программами и сервисами проверки...
18 06 2026 16:56:50
Нет новых идей для развития рекламной компании? Одобренные рекомендации по поисковому продвижению от экспертов: спикеров и участников 8P 2018...
17 06 2026 23:38:58
Ярослав Легенчук поделился историей успешного «переезда» площадки IT-продукта из Рунета в страны ЕС...
16 06 2026 22:59:47
Создатель сервиса Foster Кирилл Винокуров рассказал, как зарегистрировать приложение для полноценной работы с Директом....
15 06 2026 3:11:48
Владельцы айфонов в странах арабского мира легче расстаются с деньгами за приложения. Вот почему арабская локаль в App Store так привлекательна...
14 06 2026 14:27:19
Безопасное соединение, которое положительно оценивают не только поисковые роботы, но и пользователи. Особенно, если на сайте предстоит оставить личные данные. Читать!...
13 06 2026 2:29:31
Пример, как 4000+ гривен превращаются в 45000+ гривен. Ниша интернет-магазинов, да еще и бытовой техники уже давно является высококонкурентной. Но при правильном продвижении даже новичок может добиться результатов....
12 06 2026 5:55:50
Давайте разбираться, в чем именно обвиняют техногиганта разработчики и действительно ли такую рекламу считают циничной....
11 06 2026 13:35:55
О том как растут доходы при оптовой торговле женской одеждой и обувью, а траты на рекламу остаются на прежнем уровне...
10 06 2026 16:18:18
Базовые знания, которые нужны, чтобы ресурс понравился поисковикам и пользователям....
09 06 2026 15:39:18
Консультант по маркетингу в зоне ru Екатерина Решетило написала пост о том, как правильно настроить стратегический контент-маркетинг для долгосрочных продаж...
08 06 2026 7:42:50
Твиты, реплаи, ретвиты - как сделать правильные выводы из активности в Twitter? Об этом читайте в нашем посте....
07 06 2026 22:39:25
Как сохранить статистику переходов из органики Google, а также автоматизировать отчетность: подробное руководство для технического специалиста....
06 06 2026 7:31:38
Почему контент-план — не тетка, или о том, в какой последовательности выкладывать статьи...
05 06 2026 23:13:32
Много интересных фактов о работе мозга и новейших исследованиях социологии и психологии....
04 06 2026 4:47:38
Правильное распределение кодов ответов сервера позволяет поисковым системам экономить ресурсы на работу с сайтом. Поисковые роботы будут получать только необходимую информацию...
03 06 2026 10:23:46
Бесплатно, быстро и безопасно. Но есть и минусы. Узнать больше!...
02 06 2026 17:12:55
Как считать конверсии из Facebook, когда они происходят в Jivosite и Битрикс24....
01 06 2026 2:49:54
Пример использования пакета google***yticsR от Марка Эдмондса...
31 05 2026 18:47:18
Иногда удержать пользователя сложнее, чем мотивировать загрузить приложение. Семь инструментов для анализа Uninstall Rate....
30 05 2026 15:25:48
Как упростить работу со скриптами на языке R? Программирование удобного интерфейса с помощью пакета «gWidgets»...
29 05 2026 18:59:31
История создания и развития холдинга «Choco Family» помогает понять масштабы онлайн-рынка Казахстана, найти точки роста для собственного бизнеса в Казнете. Каково быть пионером ecommerce в стране? Чем казахстанский рынок ecommerce отличается от Рунета и Уанета? Читать!...
28 05 2026 2:44:10
Еще:
понять и запомнить -1 :: понять и запомнить -2 :: понять и запомнить -3 :: понять и запомнить -4 :: понять и запомнить -5 :: понять и запомнить -6 :: понять и запомнить -7 ::