Многие пользователи сервиса уже заметили, что мы не выгружаем все данные, имеющиеся в сервисе-источнике, но мало кто знает, почему. Основная причина - объем результирующих данных. Увеличение объема влечет за собой много различных проблем, которые, на первый взгляд, не видны. В первую очередь это увеличение времени, необходимого для получения данных: это связано с тем, что каждый онлайн-сервис имеет определенные мощности, выделенные для обработки запросов API. Поэтому чем больше данных, тем дольше сервис-источник их будет отдавать. Вторая наиболее важная проблема, это сам объем данных: чем он больше, тем больше требуется места для его хранения в базе, тем больше потребуется ресурсов для его обработки, и не важно, где вы это будете делать. Если вы планируете обрабатывать данные в самой базе, то вам потребуется гораздо более производительная база данных, чем та, которой будет достаточно для хранения. Чем больше нужна производительность, тем дороже это будет стоить. Если же вы экспортируете данные во внешний инструмент для их последующей обработки, допустим Power BI, то и в этом случае вам не удастся избежать проблем, так как экспорт данных начнет занимать больше времени, а для обработки данных потребуется больше ресурсов, в первую очередь - оперативной памяти.
В связи с этим в выгрузки из некоторых сервисов, которые в потенциале содержат большое количество данных и имеют хорошо развитое API, мы осознано ограничили базовую выгрузку наиболее используемыми данными. В тоже время мы добавили возможность выгрузки произвольных отчетов из этих сервисов, которые может создать пользователь самостоятельно с любым дозволенным набором параметров и показателей, в любом количестве. Эти отчеты создаются единожды и в последующем обновляются автоматически сервисом аналогично тому, как обновляются данные в базовых выгрузках.
Для примера рассмотрим использование выгрузки отчетов из Яндекс.Директ, выгрузка отчетов из двух других сервисов работает аналогично, так что, ознакомившись с данный инструкцией, вам не составит труда выгрузить необходимый отчет из любого из других сервисов.
В первую очередь, необходимо подключить аккаунт Яндекс.Директ и запустить базовую выгрузку данных, допустим за прошедшую неделю:
После того, как вы запустили выгрузку исторических данных, переходим в раздел «Планировщик заданий» и нажимаем кнопку «Добавить новое+»
Далее в выпадающем списке выбираем тип задания «Выгрузка отчетов из Яндекс.Директ»
На следующей странице необходимо указать параметры отчета, которые мы хотим выгрузить. В первую очередь указываем его название, далее выбираем необходимый источник данных (подключенный аккаунт Яндекс.Директ), тип отчета и указываем необходимые поля. Для примера на скриншоте показан отчет по блокам показа объявлений:
Более подробно с типами отчетов можно ознакомится в официальной документации API Яндекс.Директ.
После того, как указали все необходимые параметры отчета, нажимаем кнопку «Продолжить» и запускаем загрузку исторических данных за период, аналогичный тому, за который ранее запускали базовую выгрузку:
После того, как выполнение задания завершено, вы можете просмотреть пример того, как выглядит отчет в настройках задания:
Здесь же необходимо посмотреть и запомнить идентификатор отчета:
Далее из настроек источника скачиваем шаблон Power BI:
Открываем его в Power BI Desktop и вводим данные, необходимые для подключения к базе данных. Более подробно об использовании готовых шаблонов для Power BI можно прочитать здесь. После обновления данных в модель будут загружены результаты работы базовой выгрузки, с которыми вы уже можете работать, но нас сейчас больше интересуют данные отчета, выгрузку которого мы настроили в сервисе. Для этого в Power BI Desktop нажимаем «Получить данные» (1). Далее выбираем «Azure» (2), «База данных SQL Azure» (3) и нажимаем кнопку «Подключить» (4),
после чего вводим данные для подключения к базе данных. В появившемся списке таблиц выбираем «ЯД Выгруженные отчеты» (1) и нажимаем кнопку «Изменить» (2).
Далее делаем фильтр по полю «Идентификатор отчета» и указываем то значение, которое было указано в настройках задания на выгрузку отчетов:
После того, как мы отфильтровали записи, удаляем все колонки кроме «Дата отчета» и «Содержимое строки», и преобразуем данные в колонке «Содержимое строки» в JSON:
Далее разворачиваем эту колонку, нажав на стрелочки справа названия столбца
и получаем выгруженный отчет:
Осталось только дать ему нормальное имя и преобразовать типы данных. После чего можно смело закрывать редактор запросов.
Теперь осталось указать только верные связи между таблицами, для чего переходим в раздел «Связи» и делаем связь между полем «Дата отчета» в таблице выгруженного отчета и полем «Дата» в таблице «SHD Параметры дат», и, так как в примере выгружался отчет по объявлениям и в него был добавлен идентификатор объявления, связываем «Идентификатор объявления» с полем «Внутренний идентификатор объявления» в таблице «ЯД Параметры объявлений»
После чего можно смело приступать к созданию отчетов.
Отличительной особенностью данной выгрузки отчетов было то, что в настройках задания мы не указывали галочку «Зафиксировать структуру».
Это приводит к тому, что все выгружаемые отчеты с подобной настройкой сохраняются в одну и ту же таблицу «Выгруженные отчеты», а данные хранятся в формате JSON. Именно поэтому в редакторе запросов в Power BI мы и использовали фильтр по идентификатору отчета, и преобразовывали содержимое поля в JSON, а после разворачивали его. Подобный способ позволяет вносить изменения в структуру отчета после его создания, а именно, добавить новые поля в отчет или удалить лишние.
Если же структура отчета однозначно известна, то тогда можно смело отметить галочку «Зафиксировать структуру», и в этом случае данные отчета будут выгружаться в отдельную таблицу, которая будет иметь имя, начинающееся с префикса сервиса (в случае с Яндекс.Директ это «ЯД») и названия задания. В данной таблице уже будет содержаться отчет в развернутом виде, поэтому в редакторе запросов необходимо будет лишь удалить лишние поля и проверить типы данных.
В случае, если вы меняете эту настройку и фиксируете структуру отчета, то необходимо будет повторить выгрузку исторических данных для отчета.
Обратите внимание! Выгрузка данных в формате JSON требует значительно больше ресурсов для хранения данных. Поэтому ее мы рекомендуем использовать для тестирования выгрузки на небольшом промежутке в 2-5 дней, а после определения нужных вам полей - переходить к фиксации структуры и работе с историческими данными.
В качестве примера создавалось задание «Статистика по блокам показа», и при фиксации структуры в базе данных создается таблица «ЯД Статистика по блокам показа».
Комментарии
1 комментарий
Коллеги, приветствую
Собрал кастомный набор полей для comagic, вытянул cid и k50id из поля utm_content по этой инструкции, всё работает. Для объединения с нашей локальной crm использовал № телефона абонента, выгрузив его также в кастомный отчёт.
Но очень скоро столкнулся с проблемой - если оставить поля в json (без "зафиксировать структуру), то невозможно перезагрузить данные за те же даты с новым набором данных.
Поставить новый набор полей и перезапустить задание позволит получить данные в новом виде только на те даты, по которым данных ещё нет.
Если же задача перезаписать уже выгруженные ранее данные, нужно изменить набор полей в задании, "зафиксировать структуру", и после этого запустить задание по тем датам, по которым данные уже есть.
Итог стоит сразу фиксировать структуру, если нет 100% понимания, какие поля будут нужны, а какие нет
Войдите в службу, чтобы оставить комментарий.