Автоматизация импорта данных Яндекс Метрики �без программирования.
Talend Open Studio for Data Integration для аналитиков
https://clck.ru/D8JH4
2
Яндекс.Метрика API
Полезные ссылки
Телеграм чат пользователей Яндекс.Метрики
*отладочный токен для демо счётчика: 05dd3dd84ff948fdae2bc4fb91f13e22bb1f289ceef0037
3
Яндекс.Метрика API
Структура запроса
https://api-metrika.yandex.ru/stat/v1/data.csv
?ids= # Номер счётчика
&accuracy=full # Точность (full - без сэмлирования)
&include_undefined=true # Включать строки, где значение первой группировки “Не определено”
&limit=100000 # Максимальное количество строк в выгрузке (100 000 макс)
&dimensions= # Список группировок
&metrics= # Список метрик
&date1= # Дата начала периода
&date2= # Дата окончания периода
&oauth_token= # Авторизационный токен.
*опционально
&offset= # Отступ чтения (Нужно, если в данных более 100 000 строк)
&filters= # Фильтр сегментации
4
Яндекс.Метрика API
Пример запроса
https://api-metrika.yandex.ru/stat/v1/data.csv
?ids=44147844
&accuracy=full
&include_undefined=true
&limit=100000
&dimensions=ym:s:date,ym:s:clientID,ym:s:userVisits,ym:s:lastTrafficSource,ym:s:lastSourceEngine,ym:s:UTMMedium,ym:s:UTMSource,ym:s:UTMCampaign
&metrics=ym:s:visits,ym:s:pageviews,ym:s:goal30606879reaches
&date1=2018-10-01
&date2=2018-10-01
&oauth_token=05dd3dd84ff948fdae2bc4fb91f13e22bb1f289ceef0037
5
Talend
Полезные ссылки
Introduction to Talend Open Studio for Data Integration
Talend Open Studio Components Reference Guide
Встроенные функции
Русскоязычное комьюнити:
6
Talend
Элементы интерфейса
7
Talend
Используемые компоненты
tHttpRequest - отправка HTTP запроса и получение ответа
tLoop - блок цикл
tFileInputDelimeted - чтение файла с разделителями (csv, tsv итд.)
tFileOutputDelimeted - запись файла с разделителями
tFileList - Список файлов
tFileDelete - удаление файла
tJava - блок для кастомного кода
8
Talend. Get Metrika data
Итоговая схема
Job Design -> Create Job -> metrika_visits
9
Отправка запроса и сохранение результата в файл
Сбор запроса для определенной даты
Цикл по дням
Talend. Get Metrika data
Загрузка 1 дня
tHttpRequest
URI: "https://api-metrika.yandex.ru/stat/v1/data.csv?ids=44147844&accuracy=full&include_undefined=true&limit=100000&dimensions=ym:s:date,ym:s:clientID,ym:s:userVisits,ym:s:lastTrafficSource,ym:s:lastSourceEngine,ym:s:UTMMedium,ym:s:UTMSource,ym:s:UTMCampaign&metrics=ym:s:visits,ym:s:pageviews,ym:s:goal30606879reaches&date1=2018-10-01&date2=2018-10-01&oauth_token=05dd3dd84ff948fdae2bc4fb91f13e22bb1f289ceef0037"
Method: GET
Write response content to file: checked
"C:/Talend_data/metrika_visits/2018-03-01.csv"
Create directory if not exists: checked
10
Talend. Get Metrika data
Параметризация
tJava
// Строка с датой в нужном формате
String date = "2018-08-02";
System.out.println("Downloading... " + date);
// Собираем запрос, подставляя даты
String request = "https://api-metrika.yandex.ru/stat/v1/data.csv" +
"?ids=44147844" +
"&accuracy=full" +
"&include_undefined=true" +
"&dimensions=ym:s:date,ym:s:clientID,ym:s:userVisits,ym:s:lastTrafficSource,ym:s:lastSourceEngine,ym:s:UTMMedium,ym:s:UTMSource,ym:s:UTMCampaign" +
"&metrics=ym:s:visits,ym:s:pageviews,ym:s:goal30606879reaches" +
"&date1=" + date +
"&date2=" + date +
"&limit=100000" +
"&oauth_token=05dd3dd84ff948fdae2bc4fb91f13e22bb1f289ceef0037";
// Путь к файлу
String file_path = "C:/Talend_data/metrika_visits/" + date + ".csv";
Connection to tHttpRequest
row type - Iterate
tHttpRequest
URI: request
Write response content to file: file_path
11
Talend. Get Metrika data
Цикл
tLoop
Loop type: While (До тех пор пока)
Declaration: Date d = TalendDate.parseDate("yyyy-MM-dd", "2018-10-01")
Condition: d.before(TalendDate.getCurrentDate())
Iteration: d = TalendDate.addDate(d, 1, "dd")
Connection to tJava
row type - Iterate
tJava
Заменить строку String date ….
String date = TalendDate.formatDate("yyyy-MM-dd", d);
12
Загрузку последних 3х дней:
Declaration: Date d = TalendDate.addDate(TalendDate.getCurrentDate(), -3, "dd")
Программа минимум выполнена!
13
Talend. Put data together
Итоговая схема
Job Design -> Create Job -> put_together
14
Получаем список дневных файлов
Выводим в консоль имя файла
Чтение дневного файла
Добавление в аккумулирующий файл
Удаление аккумулирующего файла перед процессом
Talend. Put data together
Список файлов
tFileList
Directory: "C:/Talend_data/metrika_visits/"
Filemask: +, "20*"
Connection from tFileList to tJava
row type - Iterate
15
tJava
System.out.println(((String)globalMap.get("tFileList_1_CURRENT_FILEPATH")));
//System.out.println("Fetching... " + ((String)globalMap.get("tFileList_1_CURRENT_FILE")));
Talend. Put data together
Читаем файл. часть 1
tFileInputDelimited
File Name / Input Stream: ((String)globalMap.get("tFileList_1_CURRENT_FILEPATH"))
Field separator: ","
Header: 2
Advanced settings > Encoding: UTF-8
Connection from tJava
row type - Iterate
16
Talend. Put data together
Читаем файл. часть 2
tFileInputDelimited -> Edit Schema
date
ClientID
userVisits
lastTrafficSource
lastSourceEngine
UTMMedium
UTMSource
UTMCampaign
visits
pageviews
goal30606879reaches
17
Talend. Put data together
Пишем в аккумулирующий файл
tFileOutputDelimited
File Name: "C:/Talend_data/metrika_visits/all_together.csv"
Field separator: ","
Append: checked
Include Header: checked
Advanced settings > Encoding: UTF-8
Connection from tFileInputDelimited
row type - Main
18
Talend. Put data together
Удаляем аккумулирующий файл перед пересборкой
tFileDelete
File Name: "C:/Talend_data/metrika_visits/all_together.csv"
Fail error: unckech
Connection from tFileDelete
Trigger -> On Component Ok
19
Talend. Sequence of jobs
Полная схема
20
Сначало одно
Потом другое
Удачи в начинаниях!
21