8. Приложение 1. Эксплуатация CSV-Uploader

8.1. Инструкция по эксплуатации CSV-Uploader

8.1.1. Общие правила формата загружаемых CSV-файлов

Общие правила формата загружаемых CSV-файлов приведены в Таблица 8.1.

Таблица 8.1 Общие правила формата загружаемых CSV-файлов

Параметр

Значение

Разделитель строк

Любой вариант из: CR/LF (0x0d0A), CR (0x0d), LF (0x0d)

Разделитель полей

По настройке csv-parser/separator (Параметры конфигурации)

Строка заголовка

Да (обязательно)

Порядок полей в строке

Определяется строкой заголовка

Ограничитель текстового поля

По настройке csv-parser/quote-char (Параметры конфигурации)

Символ маскировки в текстовом поле

По настройке csv-parser/escape-char (Параметры конфигурации)

Обнаружение значения null

До релиза 1.5.0 (включительно): по настройке csv-parser/field-as-null (Параметры конфигурации)

Начиная с релиза 1.10.0: в текущей реализации парсера данная настройка не поддерживается

Кодирование символов

UTF-8

Десятичный разделитель

символ . (0x2e), может не указываться для целых значений

Формат даты

Любой из: dd.MM.yyyy, yyyy-MM-dd

Формат времени

Любой из: HH:mm:ss, H:mm:ss

Формат даты-времени

До релиза 1.5.0(включительно) любой из: yyyy-MM-dd HH:mm:ss, dd.MM.yyyy HH:mm:ss

Начиная с релиза 1.10.0 любой из: yyyy-MM-dd HH:mm:ss.000000, dd.MM.yyyy HH:mm:ss.000000

8.1.2. Загрузка структуры Витрины

Примечание

XML-файл со структурой Витрины может быть загружен только один раз после установки Компонента «Витрина данных Лайт» и при наличии прямого подключения к Prostore (настройка prostore-rest-client.enabled: true).

Для передачи XML-файла со структурой Витрины выполните следующие действия:

  1. Откройте программный интерфейс CSV-uploader.

  2. Выберите вкладку Загрузка структуры.

  3. В открывшемся окне Загрузка структуры Витрины нажмите кнопку Выберите файл, выберите XML-файла для загрузки и нажмите кнопку Загрузить (см. Рисунок - 8.43).

Загрузка структуры Витрины

Рисунок - 8.43 Загрузка структуры Витрины

В случае успешного применения настроек отобразится информационное сообщение: Список таблиц загружен.

8.1.3. Выгрузка шаблона CSV

Примечание

Выгрузка шаблонов CSV-файлов возможна только при наличии прямого подключения к Prostore (настройка prostore-rest-client.enabled: true)

Для выгрузки шаблона CSV-файла со структурой Витрины выполните следующие действия:

  1. Откройте программный интерфейс CSV-uploader.

  2. Выберите вкладку Выгрузка шаблона CSV.

  3. Выберите таблицу для выгрузки, например, demo_view_test.ticket, для выгрузки примера CSV-таблиц для СМЭВ4 (см. Рисунок - 8.44).

  4. Нажмите кнопку Выгрузить. Файл будет загружен на локальный компьютер. Если требуется выгрузить все таблицы, нажмите кнопку Выгрузить все.

Выгрузка шаблона CSV

Рисунок - 8.44 Выгрузка шаблона CSV

В случае успешной выгрузки на экране монитора отобразится информационное сообщение: «Список таблиц выгружен».

8.1.4. Загрузка CSV-файла

Для загрузки CSV-файла выполните следующие действия:

  1. Откройте программный интерфейс CSV-uploader.

  2. Выберите вкладку Загрузить.

  3. В открывшемся окне Загрузка файла выберите:

а) Режим:

  • Вставка - параметр определяет, что данные будут добавлены.

  • Удаление - параметр определяет, что данные будут удалены.

б) Выполнять проверку форматно-логического контроля: переключатель отображается, если в настройках модуля CSV-uploader, включен ФЛК

(validation.enabled = true) и указан адрес модуля REST-Uploader (validation.rest-uploader-url), а также выбран режим «Вставка»:

  • Включено - перед загрузкой файлов на Витрину данных выполняется ФЛК при помощи модуля REST-Uploader;

  • Выключено - данные загружаются на Витрину данных без ФЛК.

Примечание

При включении настройки upload.mandatoryFlk: true переключатель «Выполнять проверку форматно-логического контроля» неактивен и всегда находится во включенном положении.

в) Таблицу, в ручном или автоматическом режиме

  • Для автоматического определения типа таблиц включите переключатель Автоматическое определение таблицы;

  • если автоматическое определение таблиц не требуется, выключите переключатель. В этом случае Витрину и таблицу можно выбрать в выпадающих списках или, при включенной опции metadata.free-input ввести в соответствующих полях.

Примечание

Автоматический режим определения таблицы доступен только при наличии прямого подключения к Prostore (настройка prostore-rest-client.enabled: true). При отсутствии прямого подключения к Prostore (настройка prostore-rest-client.enabled: false) Витрины и таблицы для выбора загружаются из файла конфигурации (раздел metadata).

Загрузка CSV-файла

Рисунок - 8.45 Загрузка CSV-файла

Выбор таблицы из списка

Рисунок - 8.46 Выбор таблицы из списка

  1. Нажмите кнопку Выберите файл чтобы выбрать файл для загрузки.

  2. Нажмите кнопку Загрузить.

  3. Убедитесь, что файл с таблицами был загружен.

Результат загрузки

Рисунок - 8.47 Результат загрузки

В случае успешной загрузки отобразится информационное сообщение: «Операция успешно выполнена: [идентификатор запроса]».

8.1.5. Обязательная загрузка данных с предварительным форматно-логическим контролем

При включении настройки VALIDATION_MANDATOR: true, переключатель Выполнять проверку форматно-логического контроля неактивен и находится во включенном положении.

В данном режиме загрузка данных в ручном режиме с использованием CSV-Uploader невозможна, для всех загружаемых данных будут проводиться проверки форматно-логического контроля в модуле REST-Uploader см. Рисунок - 8.48.

Обязательная загрузка данных с предварительным форматно-логическим контролем

Рисунок - 8.48 Обязательная загрузка данных с предварительным форматно-логическим контролем

8.1.6. Загрузка данных без подключения к Prostore

При отсутствии прямого подключения к Prostore выбор витрин и таблиц выполняется в интерфейсе загрузчика в виде выпадающих списков (см. Рисунок - 8.49).

При этом, для выбора таблиц сначала нужно выбрать Datamart (в случае, если ручной ввод названия таблицы отключен).

Выбор датамарта/таблицы из предопределенного списка

Рисунок - 8.49 Выбор датамарта/таблицы из предопределенного списка

Отображение выбора датамарта/таблицы из предопределенного списка

Рисунок - 8.50 Отображение выбора датамарта/таблицы из предопределенного списка

При включении ручного ввода названия таблицы под полем выбора таблиц отображается текстовое поле ввода (см. Рисунок - 8.51).

Отображение текстового поля ввода

Рисунок - 8.51 Отображение текстового поля ввода

8.1.7. Аутентификация

8.1.7.1. Использование jwt-токена при включенной аутентификации в модуле REST-Uploader

При использовании ФЛК перед загрузкой данных на Витрину данных может потребоваться дополнительная аутентификации в модуле REST-Uploader. В этом случае необходимо использование jwt-токена. Для этого необходимо выставить следующую настройку в модуле CSV-Uploader:

  • auth.mode: JWT.

При такой конфигурации, при открытии загрузчика CSV-Uploader отображается модальное окно ввода токена пользователя, а на странице загрузки данных на Витрину данных отображается поле Изменить JWT. (см. Рисунок - 8.52).

Модальное окно ввода токена

Рисунок - 8.52 Модальное окно ввода токена

Значение внесенного JWT-токена используется как барьерный токен при обращении к REST-Uploader.

Внесенное значение токена сохраняется в сессии пользователя и автоматически подставляется при включении переключателя выполнения ФЛК проверок. Для того чтобы изменить JWT-токен для аутентификации, необходимо нажать кнопку Изменить JWT (см. Рисунок - 8.53).

Отображение кнопки **Изменить JWT**

Рисунок - 8.53 Отображение кнопки Изменить JWT

8.1.7.2. Аутентификация через Datamart studio

При загрузке данных CSV-Uploader в удаленную Витрину необходимо пройти аутентификацию через ПО Datamart studio.

Для включения аутентификации через Datamart studio необходимо выставить следующую настройку в модуле CSV-Uploader:

  • auth.mode: STUDIO;

  • auth.studio.ui-prompt:

    • true - запрос логина и пароля на странице «Загрузка», (отдельно для каждого datamart);

    • false - используются логины и пароли, из конфигурационного файла (блок auth.studio.datamarts).

8.1.8. Настройки CSV-uploader

Для CSV-uploader можно настроить следующие параметры:

  • автоматический запуск загрузки CSV-файлов по расписанию;

  • настройка журнала загрузок по расписанию.

8.1.8.1. Автоматический запуск загрузки CSV-файлов по расписанию

Для настройки автоматического запуска загрузки CSV-файлов по расписанию, выполните следующие действия:

  1. Откройте программный интерфейс CSV-uploader.

  2. Выберите вкладку Настройки.

  3. В открывшемся окне Настройки в поле Запуск по расписанию, укажите время в Cron формате (например, 0 15 10? * * - загрузка файлов будет происходить каждый день в 10.15) и путь к каталогу с CSV-файлами (см. Рисунок - 8.54) .

  4. Установите маркер в поле Включить, для активации автоматического запуска загрузки.

  5. Нажмите кнопку Применить настройки.

Автоматический запуск загрузки CSV-файлов по расписанию

Рисунок - 8.54 Автоматический запуск загрузки CSV-файлов по расписанию

В случае успешного применения настроек отобразится информационное сообщение: «Конфигурация успешно получена».

8.1.8.2. Настройка журнала загрузок по расписанию

Для настройки журнала загрузок по расписанию выполните следующие действия:

  1. Откройте программный интерфейс CSV-uploader.

  2. Выберите вкладку Настройки.

  3. В открывшемся окне Настройки в поле Размер страницы, укажите количество записей на страницу, например, 20 (см. Рисунок - 8.55).

  4. Нажмите кнопку Применить настройки.

Настройка журнала загрузок по расписанию

Рисунок - 8.55 Настройка журнала загрузок по расписанию

В случае успешного применения настроек отобразится информационное сообщение: Конфигурация успешно получена.

8.1.9. Просмотр журнала загрузок по расписанию

В журнале загрузок по расписанию можно просмотреть действия выполненные в CSV-uploader:

  • Время - время, когда операция была выполнена.

  • Уровень - статус операции.

    • ERROR - ошибка загрузки;

    • INFO - описание операции

  • Сообщение - краткое информационное сообщение об операции.

Для просмотра журнала загрузок по расписанию, выполните следующие действия:

  1. Откройте программный интерфейс CSV-uploader.

  2. Выберите вкладку Журнал загрузок по расписанию.

  3. В открывшемся окне просмотрите операции, которые были выполнены в CSV-uploader (см. Рисунок - 8.56).

  4. Нажмите кнопку Применить настройки.

Просмотр журнала загрузок по расписанию

Рисунок - 8.56 Просмотр журнала загрузок по расписанию

8.1.10. Интерфейс Форматно-логического контроля

На вкладке Журнал загрузок отображается:

  • список последних отправленных файлов, определяемых настройками модуля CSV-Uploader - значение по умолчанию 20:

    • время записи;

    • пользователь;

    • идентификаторы файлов;

    • статус загрузки файла;

  • кнопка запроса отчета об ошибках для файла (кнопка отображается активной только в случае финальных статусов):

    • статус 3, Успешно обработан;;

    • статус 4, Ошибка обработки запроса;

    • статус 7, Ошибки ФЛК;

  • элементы пагинации списка requestId.

Просмотр журнала загрузок

Рисунок - 8.57 Просмотр журнала загрузок

При нажатии на кнопку запроса отчета об ошибках для файла, модуль CSV-Uploader скачивает файл на ПК пользователя автоматически или при нажатии на название отчета с выводом сообщения о загрузке файла.

9. Приложение 2. Пример XML-файла со структурой витрины

<?xml version='1.0' encoding='utf-8'?>
<ns:PODDMetadataRequest
        xmlns:ns="urn://x-artefacts-podd-gosuslugi-local/metadata/datamart/2/1.6.0"
        xmlns:ns1="urn://x-artefacts-podd-gosuslugi-local/metadata/types/1.3">
    <ns:requestId>00000000-0000-0000-0000-000000000001</ns:requestId>
    <ns:metadata>
        <ns1:datamart>
            <ns1:id>1806436d-437a-400d-b32e-aa15c1a2d4bc</ns1:id>
            <ns1:mnemonic>demo_view</ns1:mnemonic>
            <ns1:description>demo_view</ns1:description>
            <ns1:tenantId>c52f062e-af97-4a44-a33f-d1a94024d0cf</ns1:tenantId>
            <ns1:version>
                <ns1:major>1</ns1:major>
                <ns1:minor>0</ns1:minor>
            </ns1:version>
            <ns1:supportedFrom>2021-01-01T00:00:00</ns1:supportedFrom>
            <ns1:datamartClass>
                <ns1:id>4c4ff97b-938b-4db6-9f4d-ae21046e4d20</ns1:id>
                <ns1:mnemonic>Passenger</ns1:mnemonic>
                <ns1:description>Passenger</ns1:description>
                <ns1:classAttribute>
                    <ns1:id>6fe29bdb-7db1-405a-a05c-b49c541c92bd</ns1:id>
                    <ns1:mnemonic>Code</ns1:mnemonic>
                    <ns1:description>Code</ns1:description>
                    <ns1:type>LONG</ns1:type>
                </ns1:classAttribute>
                <ns1:classAttribute>
                    <ns1:id>e590e7b3-b611-4891-bbd1-a5e256105e73</ns1:id>
                    <ns1:mnemonic>Id</ns1:mnemonic>
                    <ns1:description>Id</ns1:description>
                    <ns1:type>STRING</ns1:type>
                </ns1:classAttribute>
                <ns1:classAttribute>
                    <ns1:id>c97a8102-6ad0-4dbd-934d-c82b83a4d83f </ns1:id>
                    <ns1:mnemonic>FirstName</ns1:mnemonic>
                    <ns1:description>FirstName</ns1:description>
                    <ns1:type>STRING</ns1:type>
                </ns1:classAttribute>
                <ns1:classAttribute>
                    <ns1:id>d2312bfb-7ec0-4c95-9026-0f6dea48c5d9</ns1:id>
                    <ns1:mnemonic>MiddleName</ns1:mnemonic>
                    <ns1:description>MiddleName</ns1:description>
                    <ns1:type>STRING</ns1:type>
                </ns1:classAttribute>
                <ns1:classAttribute>
                    <ns1:id>7b63db89-bd0e-4c92-8bc0-e609175937b9</ns1:id>
                    <ns1:mnemonic>LastName</ns1:mnemonic>
                    <ns1:description>LastName</ns1:description>
                    <ns1:type>STRING</ns1:type>
                </ns1:classAttribute>
                <ns1:classAttribute>
                    <ns1:id>8f3e7f95-f66b-4d4a-b2eb-55a3e6134c3e</ns1:id>
                    <ns1:mnemonic>Birthday</ns1:mnemonic>
                    <ns1:description>Birthday</ns1:description>
                    <ns1:type>DATE</ns1:type>
                </ns1:classAttribute>
                <ns1:classAttribute>
                    <ns1:id>e3658240-b405-4838-99af-d32cd063c463</ns1:id>
                    <ns1:mnemonic>Passport</ns1:mnemonic>
                    <ns1:description>Passport</ns1:description>
                    <ns1:type>STRING</ns1:type>
                </ns1:classAttribute>
                <ns1:primaryKey>
                    <ns1:id>6fe29bdb-7db1-405a-a05c-b49c541c92bd</ns1:id>
                    <ns1:mnemonic>Code</ns1:mnemonic>
                    <ns1:description>Code</ns1:description>
                    <ns1:type>
                        <ns1:id>00000000-0000-0000-0000-000000000001</ns1:id>
                        <ns1:value>LONG</ns1:value>
                    </ns1:type>
                </ns1:primaryKey>
            </ns1:datamartClass>
            <ns1:datamartClass>
                <ns1:id>cafe41db-3878-4796-ba60-cbd54f042c63</ns1:id>
                <ns1:mnemonic>Ticket</ns1:mnemonic>
                <ns1:description>Ticket</ns1:description>
                <ns1:classAttribute>
                    <ns1:id>bc90563b-168a-4faa-9394-7b7390dd0d92</ns1:id>
                    <ns1:mnemonic>Id</ns1:mnemonic>
                    <ns1:description>Id</ns1:description>
                    <ns1:type>STRING</ns1:type>
                </ns1:classAttribute>
                <ns1:classAttribute>
                    <ns1:id>ac93618f-752b-44d5-a77c-23a3c9eb069b</ns1:id>
                    <ns1:mnemonic>PassengerId</ns1:mnemonic>
                    <ns1:description>PassengerId</ns1:description>
                    <ns1:type>STRING</ns1:type>
                </ns1:classAttribute>
                <ns1:classAttribute>
                    <ns1:id>51355519-2d59-426e-b199-9589930acaaa</ns1:id>
                    <ns1:mnemonic>TripId</ns1:mnemonic>
                    <ns1:description>TripId</ns1:description>
                    <ns1:type>STRING</ns1:type>
                </ns1:classAttribute>
                <ns1:classAttribute>
                    <ns1:id>fe92c245-929e-4684-b9c9-22bda6939c09</ns1:id>
                    <ns1:mnemonic>Number</ns1:mnemonic>
                    <ns1:description>Number</ns1:description>
                    <ns1:type>LONG</ns1:type>
                </ns1:classAttribute>
                <ns1:classAttribute>
                    <ns1:id>4a32ded4-c970-4874-b0b1-2e3eed8b6483</ns1:id>
                    <ns1:mnemonic>ByCard</ns1:mnemonic>
                    <ns1:description>ByCard</ns1:description>
                    <ns1:type>BOOLEAN</ns1:type>
                </ns1:classAttribute>
                <ns1:classAttribute>
                    <ns1:id>35f59c80-fcc3-483c-9cd3-dc3afb606d66</ns1:id>
                    <ns1:mnemonic>Price</ns1:mnemonic>
                    <ns1:description>Price</ns1:description>
                    <ns1:type>DOUBLE</ns1:type>
                </ns1:classAttribute>
                <ns1:classAttribute>
                    <ns1:id>8b46ff55-6853-458c-851d-6e1666da918b</ns1:id>
                    <ns1:mnemonic>Sold</ns1:mnemonic>
                    <ns1:description>Sold</ns1:description>
                    <ns1:type>TIMESTAMP</ns1:type>
                </ns1:classAttribute>
                <ns1:primaryKey>
                    <ns1:id>fe92c245-929e-4684-b9c9-22bda6939c09</ns1:id>
                    <ns1:mnemonic>Number</ns1:mnemonic>
                    <ns1:description>Number</ns1:description>
                    <ns1:type>
                        <ns1:id>00000000-0000-0000-0000-000000000001</ns1:id>
                        <ns1:value>LONG</ns1:value>
                    </ns1:type>
                </ns1:primaryKey>
            </ns1:datamartClass>
            <ns1:datamartClass>
                <ns1:id>76268090-60ee-4960-8268-1b91f4186e87</ns1:id>
                <ns1:mnemonic>Trip</ns1:mnemonic>
                <ns1:description>Trip</ns1:description>
                <ns1:classAttribute>
                    <ns1:id>bd173e24-ea7e-4869-9d43-9f57f5b0a82f</ns1:id>
                    <ns1:mnemonic>Id</ns1:mnemonic>
                    <ns1:description>Id</ns1:description>
                    <ns1:type>STRING</ns1:type>
                </ns1:classAttribute>
                <ns1:classAttribute>
                    <ns1:id>1ed32816-8bdb-4d35-9f66-8c08df13ad28</ns1:id>
                    <ns1:mnemonic>Number</ns1:mnemonic>
                    <ns1:description>Number</ns1:description>
                    <ns1:type>INTEGER</ns1:type>
                </ns1:classAttribute>
                <ns1:classAttribute>
                    <ns1:id>78f587fa-b53e-4912-b631-0c4a249d20b6</ns1:id>
                    <ns1:mnemonic>Duration</ns1:mnemonic>
                    <ns1:description>Duration</ns1:description>
                    <ns1:type>STRING</ns1:type>
                </ns1:classAttribute>
                <ns1:classAttribute>
                    <ns1:id>1750c564-20a7-4e07-988a-b382227123e4</ns1:id>
                    <ns1:mnemonic>Length</ns1:mnemonic>
                    <ns1:description>Length</ns1:description>
                    <ns1:type>FLOAT</ns1:type>
                </ns1:classAttribute>
                <ns1:primaryKey>
                    <ns1:id>1ed32816-8bdb-4d35-9f66-8c08df13ad28</ns1:id>
                    <ns1:mnemonic>Number</ns1:mnemonic>
                    <ns1:description>Number</ns1:description>
                    <ns1:type>
                        <ns1:id>00000000-0000-0000-0000-000000000002</ns1:id>
                        <ns1:value>INTEGER</ns1:value>
                    </ns1:type>
                </ns1:primaryKey>
            </ns1:datamartClass>
        </ns1:datamart>
    </ns:metadata>
</ns:PODDMetadataRequest>