# Яндекс Трекер: экспорт и визуализация данных


Визуализация данных из [Яндекс Трекер](https://yandex.ru/support/tracker/ru/) в Yandex DataLens позволяет построить более сложную аналитику, чем это возможно средствами самого Tracker.

Для визуализации данных из Tracker в DataLens необходимо:
* организовать регулярный экспорт данных во внешнее хранилище;
* визуализировать необходимые метрики и данные с помощью DataLens.

Для визуализации данных выполните следующие шаги:

1. [Подготовьте облако к работе](#before-you-begin).
1. [Создайте БД для хранения данных Tracker](#database-create).
1. [Создайте OAuth-токен для доступа к Tracker](#oauth-token).
1. [Создайте функцию Cloud Functions для импорта данных](#function-import).
1. [Создайте подключение к DataLens](#connection-create).
1. [Создайте датасет](#dataset-create).
1. [Создайте чарт](#chart-create).
1. [Создайте дашборд в DataLens и добавьте на него чарты](#dashboard-create).

## Перед началом работы {#before-you-begin}


{% note info %}

Рекомендуется создать отдельную учетную запись Tracker для работы с сервисом.

{% endnote %}


Зарегистрируйтесь в Yandex Cloud и создайте [платежный аккаунт](../../billing/concepts/billing-account.md):
1. Перейдите в [консоль управления](https://console.yandex.cloud), затем войдите в Yandex Cloud или зарегистрируйтесь.
1. На странице **[Yandex Cloud Billing](https://center.yandex.cloud/billing/accounts)** убедитесь, что у вас подключен платежный аккаунт, и он находится в [статусе](../../billing/concepts/billing-account-statuses.md) `ACTIVE` или `TRIAL_ACTIVE`. Если платежного аккаунта нет, [создайте его](../../billing/quickstart/index.md) и [привяжите](../../billing/operations/pin-cloud.md) к нему облако.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать [каталог](../../resource-manager/concepts/resources-hierarchy.md#folder), в котором будет работать ваша инфраструктура, на [странице облака](https://console.yandex.cloud/cloud).

[Подробнее об облаках и каталогах](../../resource-manager/concepts/resources-hierarchy.md).


### Необходимые платные ресурсы {#paid-resources}

* Постоянно запущенный кластер Managed Service for ClickHouse® ([тарифы Managed Service for ClickHouse®](../../managed-clickhouse/pricing.md));
* Использование функции Cloud Functions ([тарифы Cloud Functions](../../functions/pricing.md)).

Если созданные ресурсы вам больше не нужны, [удалите их](#clear-out).


## Создайте БД для хранения данных Tracker {#database-create}

1. Перейдите в [консоль управления](https://console.yandex.cloud).
1. Перейдите в сервис **Managed Service for&nbsp;ClickHouse**.
1. Нажмите кнопку **Создать кластер ClickHouse**.
1. Укажите параметры кластера:
    * Базовые параметры:
        * **Окружение** — `PRODUCTION`;
        * **Версия** — `22.8 LTS`; 
    * Ресурсы:
        * **Платформа** — `Intel Ice Lake`;
        * **Тип** — `standart`;
        * **Класс хоста** — `s3-c2-m8 (2 vCPU, 8 ГБ)`;
    * Размер хранилища — `30 ГБ`;
    * Хосты:
        * **Публичный доступ** — `Включено`;
    * Настройки СУБД:
        * **Управление пользователями через SQL** — `Выключено`;
        * **Управление базами данных через SQL** — `Выключено`;
        * **Имя пользователя** — `tracker_data`;
        * **Имя БД** — `db1`;
    * Сервисные настройки:
        * **Доступ из DataLens** — `Включено`;
        * **Доступ из Serverless** — `Включено`.
    Полный список настроек смотрите в разделе [Настройки Managed Service for ClickHouse®](../../managed-clickhouse/concepts/settings-list.md).
1. Нажмите кнопку **Создать кластер**. Дождитесь, когда статус созданного кластера сменится на `Alive`. 
1. Скопируйте и сохраните имя хоста для дальнейшей настройки Cloud Functions.
![Вкладка Хосты](../../_assets/dl-tracker-host-name.png =680x372)

## Создайте OAuth-токен для доступа к Tracker {#oauth-token}

1. Перейдите на страницу [Создание приложения](https://oauth.yandex.ru/client/new).
1. В окне **Какое приложение хотите создать?** оставьте `Для авторизации пользователей` и нажмите **Перейти к созданию**. Если отобразилось окно верификации вашего аккаунта на Госуслугах, закройте его.
1. В окне **Создание приложения**:

   * заполните поле **Название вашего сервиса**;
   * прикрепите иконку вашего сервиса;
   * укажите почту, на которую отправлять оповещения об изменениях во внешней авторизации.
   
   Нажмите кнопку **Продолжить**.

1. В окне **Платформы приложений** отметьте `Веб-сервисы` и в поле **Redirect URI** укажите URL, куда направить пользователя после того, как он разрешил или отказал приложению в доступе, или впишите адрес `https://oauth.yandex.ru/verification_code` для отладки.

   Нажмите кнопку **Продолжить**.

1. В окне **Права доступа к данным пользователей** в поле **Дополнительные** укажите:

   * `Чтение из трекера`;
   * `Запись в трекер`.

   Нажмите кнопку **Продолжить**.

1. Убедитесь, что все указано верно, и нажмите кнопку **Всё верно, создать приложение**.
1. Скопируйте идентификатор приложения в поле **ClientID**.
1. В новом окне введите в адресную строку браузера адрес:

    ```
    https://oauth.yandex.ru/authorize?response_type=token&client_id=<идентификатор_приложения>
    ```

    Где `client_id` — идентификатор созданного приложения, скопированный из поля **ClientID**.

1. Авторизуйтесь с помощью учетной записи Tracker, которая будет использоваться для визуализации.
1. Сохраните полученный OAuth-токен.

## Создайте функцию Cloud Functions для импорта данных {#function-import}

1. Перейдите в [консоль управления](https://console.yandex.cloud).
1. Перейдите в сервис **Cloud Functions**.
1. Нажмите кнопку **Создать функцию**.
1. Укажите название функции и нажмите кнопку **Создать**.
1. В открывшемся окне **Редактор** выберите среду выполнения `Python`.
1. Нажмите кнопку **Продолжить**.
1. В поле **Источник кода** нажмите кнопку **ZIP-архив**.
1. Прикрепите [тестовый архив](https://github.com/yandex-cloud-examples/yc-tracker-data-import/blob/main/build/tracker-data-import.zip).
1. В поле **Точка входа** укажите `tracker_import.handler`.
1. В разделе **Параметры** укажите:
    * **Таймаут** — `60`;
    * **Память** — `1024`;
    * **Переменные окружения**:
        * `TRACKER_ORG_ID` — ID организации Яндекс 360 для бизнеса.
          
          {% note info "Примечание" %}

          Если у вас используется организация Yandex Identity Hub (проверить можно на [странице администрирования](https://tracker.yandex.ru/admin/orgs)), в коде функции `tracker_import.py` замените заголовок `X-Org-ID` на `X-Cloud-Org-Id`.

          {% endnote %}

        * `TRACKER_OAUTH_TOKEN` — [OAuth-токен](#oauth-token) учетной записи Tracker.
        * `CH_HOST` — имя [хоста](#database-create).
        * `CH_DB` — название [базы данных](#database-create).
        * `CH_USER` — [имя пользователя](#database-create).
        * `CH_PASSWORD` — [пароль](#database-create).
        * `CH_ISSUES_TABLE` — `tracker_issues`.
        * `CH_CHANGELOG_TABLE` — `tracker_changelog`.
        * `TRACKER_INITIAL_HISTORY_DEPTH` — `1d`.
        * `CH_STATUSES_VIEW` — `v_tracker_statuses`.
1. Нажмите кнопку **Сохранить изменения**.
1. На вкладке **Тестирование** нажмите кнопку **Запустить тест**.
1. Результат теста — лог импорта данных:
    ```json
    {
        "statusCode": 200,
        "headers": {
        "Content-Type": "text/plain"
        },
        "isBase64Encoded": false,
        "body": "OK"
    }
    ```
1. Создайте [триггер](../../functions/concepts/trigger/index.md) для регулярного экспорта новых данных в БД:
    1. Откройте раздел **Cloud Functions**.
    1. Нажмите ![trigger](../../_assets/console-icons/gear-play.svg) → **Создать триггер**.
    1. Укажите тип триггера — **Таймер**.
    1. В поле **Cron-выражение** выберите `Каждый день`.
    1. В разделе **Настройки функции** нажмите кнопку **Создать**.
    1. Укажите имя аккаунта. По умолчанию аккаунту присвоена роль `functions.functionInvoker` для работы с триггером.
    1. Нажмите кнопку **Создать**.
    1. Нажмите кнопку **Создать триггер**.

## Создайте подключение в DataLens {#connection-create}

1. Откройте [кластер](#database-create) **Managed Service for ClickHouse®**.
1. В левой части окна выберите раздел ![datalens](../../_assets/console-icons/chart-column.svg) **DataLens**.
1. Нажмите кнопку **Создать подключение**.
1. Укажите настройки подключения:
    * **Подключение** — `Выбрать в каталоге`;
    * **Кластер** — кластер, указанный при [создании базы данных](#database-create);
    * **Имя хост** — хост, указанный при [создании базы данных](#database-create);
    * **Порт HTTP-интерфейса** — `8443`;
    * **Имя пользователя** — имя пользователя, указанное при [создании базы данных](#database-create);
    * **Пароль** — пароль, указанный при [создании базы данных](#database-create);
    * **Время жизни кeша в секундах** — `По умолчанию`;
    * **Уровень доступа SQL-запросов** — `Запретить`;
    * **HTTPS** — `Включено`.

1. Нажмите кнопку **Создать подключение**.

## Создайте датасет {#dataset-create}

1. Перейдите на главную страницу [DataLens](https://datalens.ru/promo).
1. Нажмите **Начать в облаке**.
1. Перейдите на [страницу подключений](https://datalens.ru/connections).
1. Выберите [подключение](#connection-create).
1. В правом верхнем углу нажмите кнопку **Создать датасет**.
1. Перенесите на рабочую область одну или несколько таблиц:
    * `db1.v_tracker_issues` — текущий (последний) срез задач;
    * `db1.v_tracker_changelog` — история изменения параметров задач;
    * `Db1.v_tracker_statuses` – время переходов между статусами на основе истории изменения задач.
1. Нажмите кнопку **Сохранить**.

## Создайте чарт {#chart-create}


1. Перейдите на главную страницу [DataLens](https://datalens.ru/?skipPromo=true).
1. На панели слева нажмите ![image](../../_assets/console-icons/chart-column.svg) **Чарты**.
1. Нажмите кнопку **Создать чарт** → **Чарт в Wizard**.
1. В левом верхнем углу нажмите ![image](../../_assets/console-icons/circles-intersection.svg) **Выберите датасет**.
1. В выпадающем списке **Датасеты** выберите [датасет](#dataset-create), созданный на предыдущем шаге.


1. На верхней панели выберите [тип визуализации](../visualization-ref/index.md). По умолчанию выбран тип **Столбчатая диаграмма**.

## Создайте дашборд и добавьте на него чарты {#dashboard-create}

1. На панели слева нажмите ![image](../../_assets/console-icons/layout-cells-large.svg) **Дашборды**.
1. Нажмите кнопку **Создать дашборд**.
1. В верхней части страницы [дашборда](#dashboard-create) нажмите кнопку **Добавить** → **Чарт**.
1. Заполните параметры виджета. Обратите внимание на следующие поля:
    * **Название**. Задает имя виджета. Отображается на верхней части виджета.
    * **Чарт**. Задает добавляемый виджет.
    * **Описание**. Задает описание виджета. Отображается на нижней части виджета.
    * **Автовысота**. Задает автоматическую высоту для виджетов типа **Таблица** и **Markdown**. Если параметр отключен, то высоту виджета на странице можно установить с помощью мыши.
1. Нажмите кнопку **Добавить**. Виджет отобразится на дашборде.
1. Сохраните дашборд:

   1. В правом верхнем углу дашборда нажмите кнопку **Сохранить**.
   1. Введите название дашборда и нажмите **Создать**.

   Подробнее о настройке дашбордов смотрите в разделе [Дашборд Yandex DataLens](../concepts/dashboard.md).

{% cut "Пример дашборда на основе данных из таблицы `v_tracker_issues`" %}

![Пример дашборда на основе данных по таблице v_tracker_issues](../../_assets/datalens/dashboard-from-table-issues.png)

{% endcut %}

{% cut "Пример дашборда на основе данных по таблице `db1.v_tracker_statuses`" %}

![Пример дашборда на основе данных по таблице db1.v_tracker_statuses](../../_assets/datalens/dashboard-from-table-statuses.png)

{% endcut %}

## Как удалить созданные ресурсы {#clear-out}

Чтобы перестать платить за созданные ресурсы:
* [Удалите ClickHouse®-кластер](../../managed-clickhouse/operations/cluster-delete.md);
* [Удалите функцию Cloud Functions](../../functions/operations/function/function-delete.md).


#### Полезные ссылки {#see-also}

* [Аналитика задач в Яндекс Трекер: встроенные возможности и интеграция с Yandex DataLens](https://yandex.cloud/ru/blog/posts/2023/10/yandex-tracker-and-datalens)

_ClickHouse® является зарегистрированным товарным знаком [ClickHouse, Inc](https://clickhouse.com)._