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

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

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

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

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

Параметр

Значение

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

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

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

по настройке 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-файл со структурой Витрины может быть загружен только один раз после установки Компонент «Витрина данных Лайт».

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

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

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

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

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

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

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

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

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

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

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

  3. Выберите таблицу для выгрузки, например, demo_view_podd.all_types_table, для выгрузки примера CSV-таблиц

  4. для СМЭВ4 (см. Рисунок - 8.44).

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

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

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

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

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

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

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

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

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

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

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

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

  1. Для автоматического определения типа таблиц включите переключатель Автоматическое определение таблицы, если автоматическое определение таблиц не требуется, выключите переключатель и выберите таблицу, в которую требуется внести изменения, например, demo_view_podd.all_types_table (см. Рисунок - 8.45).

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

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

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

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

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

При включенной настройке определения таблиц после выбора и загрузки файла:

  • модулем CSV-Uploader определяется таблица загрузки:

    • в случае, если активен переключатель «Автоматическое определение таблицы» по метаданным csv файла;

    • в случае если выбрана конкретная таблица, в соответствии с выбором пользователя;

  • модуль CSV-Uploader обогащает url запроса на загрузку именем датамарта и таблицы;

  • модуль CSV-Uploader выполняет запрос /v2/datamarts/{datamart_name}/tables/{table_name}/upload к модулю REST-Uploader;

  • модуль CSV-Uploader отображает текст ответа на странице загрузки в формате:

    • время ответа;

    • код ответа;

    • body ответа:

  • в случае успешного ответа, модуль CSV-Uploader сохраняет requestId файла в топик flk_logs в внутренней Kafka.

8.1.5. Загрузка CSV-файла с предварительным форматно-логическим контролем

В случае, если в настройках модуля CSV-Uploader включена настройка VALIDATION_ENABLE: true и прописан адрес модуля REST-Uploader (REST_UPLOADER_URL) при активном режиме «Вставка» на странице отображается переключатель с текстом «Выполнять проверку форматно-логического контроля» , по умолчанию значение вкл (true) см. Рисунок - 8.46.

Переключатель выполнения ФЛК

Рисунок - 8.46 Переключатель выполнения ФЛК

  1. При включенном переключателе «Выполнять проверку форматно-логического контроля» после выбора файла и нажатия кнопки Загрузить:

  • модулем CSV-Uploader определяется таблица загрузки:

    • в случае, если включен переключатель «автоопределение таблицы» по метаданным CSV файла;

    • в случае если выбрана конкретная таблица, в соответствии с выбором пользователя;

    • модуль CSV-Uploader обогащает URL запроса на загрузку именем датамарта и таблицы;

    • модуль CSV-Uploader выполняет запрос /v2/datamarts/{datamart_name}/tables/{table_name}/upload к модулю REST-Uploader;

    • модуль CSV-Uploader отображает текст синхронного ответа на странице загрузки в формате:

      • время ответа;

      • код ответа;

      • body ответа.

  1. При выключенном переключателе «Выполнять проверку форматно-логического контроля» загрузка выполняется стандартным способом через модуль CSV-Uploader.

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

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

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

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

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

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

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

  • VALIDATION_ENABLE:true;

  • JWT_AUTH:true.

В случае, если обе настройки имеют значение true, при открытии загрузчика CSV-uploader отображается модальное окно ввода токена пользователя, а на странице загрузки данных в витрину отображается поле «Изменить JWT» (см. Рисунок - 8.48).

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

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

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

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

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

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

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

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

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

  • количество отображаемых записей для Журнала операций.

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

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

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

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

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

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

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

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

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

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

8.1.10. Настройка Журнала операций

Для настройки Журнала операций, выполните следующие действия:

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

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

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

Настройка *Журнала операций*

Рисунок - 8.51 Настройка Журнала операций

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

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

8.1.11. Просмотр Журнала операций

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

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

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

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

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

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

Для просмотра Журнала операций, выполните следующие действия:

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

  2. Выберите вкладку Журнал операций.

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

Просмотр *Журнала операций*

Рисунок - 8.52 Просмотр Журнала операций

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

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

На вкладке Форматно-логический контроль (см. flk) отображается:

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

    • список requestId;

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

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

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

    • статус 3;

    • статус 4;

    • статус 7;

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

Форматно-логический контроль

Рисунок - 8.53 Форматно-логический контроль

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

  • вызывает метод /v2/requests/{request_id}/report/;

  • получает CSV файл с именем report_requestId.csv;

  • в зависимости от ответа:

    • если response 200 ok: скачивает файл на ПК пользователя автоматически или при нажатии на название отчета с выводом сообщения о загрузке файла;

    • если response 400 - выводит сообщение Нет данных.

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>