1 of 21

Автоматизация импорта данных Яндекс Метрики �без программирования.

Talend Open Studio for Data Integration для аналитиков

Владимир Мюге

fb, tg

2 of 21

https://clck.ru/D8JH4

2

3 of 21

Яндекс.Метрика API

Полезные ссылки

3

4 of 21

Яндекс.Метрика 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

5 of 21

Яндекс.Метрика 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

6 of 21

Talend

Полезные ссылки

6

7 of 21

Talend

Элементы интерфейса

  1. Главное меню, в нём все работы.
  2. Основной «холст» (canvas), на нём настраиваются потоки данных.
  3. Палета со всеми доступными элементами
  4. Блок с 4мя вкладками, в т.ч.Run (вкладка запуска) и Component (настройка элемента)

7

8 of 21

Talend

Используемые компоненты

tHttpRequest - отправка HTTP запроса и получение ответа

tLoop - блок цикл

tFileInputDelimeted - чтение файла с разделителями (csv, tsv итд.)

tFileOutputDelimeted - запись файла с разделителями

tFileList - Список файлов

tFileDelete - удаление файла

tJava - блок для кастомного кода

8

9 of 21

Talend. Get Metrika data

Итоговая схема

Job Design -> Create Job -> metrika_visits

9

Отправка запроса и сохранение результата в файл

Сбор запроса для определенной даты

Цикл по дням

10 of 21

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

11 of 21

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

12 of 21

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 of 21

Программа минимум выполнена!

13

14 of 21

Talend. Put data together

Итоговая схема

Job Design -> Create Job -> put_together

14

Получаем список дневных файлов

Выводим в консоль имя файла

Чтение дневного файла

Добавление в аккумулирующий файл

Удаление аккумулирующего файла перед процессом

15 of 21

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")));

16 of 21

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

17 of 21

Talend. Put data together

Читаем файл. часть 2

tFileInputDelimited -> Edit Schema

date

ClientID

userVisits

lastTrafficSource

lastSourceEngine

UTMMedium

UTMSource

UTMCampaign

visits

pageviews

goal30606879reaches

17

18 of 21

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

19 of 21

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

20 of 21

Talend. Sequence of jobs

Полная схема

20

Сначало одно

Потом другое

21 of 21

Удачи в начинаниях!

21