.. _csv_uploader_config: Конфигурация CSV-uploader (application.yml) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Файл ``application.yml`` – основной конфигурационный файл модуля CSV-uploader, в котором задана логика и порядок работы загрузчика, а также другие настройки необходимые для корректной работы адаптера. .. _csv_uploader_application.yml: Пример файла application.yml ############################### .. code-block:: yaml # Настройки авторизации auth: # Режим аутентификации # DISABLED - аутентификация отключена # JWT - (ранее upload.jwt-auth) включает окно запроса JWT на странице "Загрузка" для аутентификации в rest-uploader # STUDIO - включает аутентификацию по логину и паролю в Datamart Platform Studio mode: ${AUTH_MODE:DISABLED} # Настройки аутентификации в режиме STUDIO studio: # Запрос логина и пароля на странице "Загрузка", (отдельно для каждого datamart). # При false используются реквизиты в блоке datamarts: ui-prompt: true datamarts: # Реквизиты для авторизации используемые на странице "Загрузка" если ui-prompt: false, а также при загрузке по расписанию. - datamart_mnemonic: datamart25 username: user password: passwd organization_ogrn: ogrn http-server: # Порт для старта веб сервера port: ${HTTP_PORT:8080} # Включить веб-сервер enabled: ${HTTP_ENABLED:true} file-size: # Ограничение на размер отправляемого файла (в мегабайтах) restriction: ${SEND_FILE_SIZE_RESTRICTION:1024} environment: # Папка для ошибочных файлов error-folder: ${ENVIRONMENT_ERROR_FOLDER:error} prostore-rest-client: enabled: true # true / false # выключение доступа к Простору persistence-datamart: ${PERSISTENCE_DATAMART:persistence} # датамарт, в котором будут располагаться таблицы с данными сервиса datasource: ${PERSISTENCE_DATASOURCE:} # по умолчанию пусто, тогда берется единственный датасорс из настроек Простора # таблица журнала загрузок table-upload-journal: ${PERSISTENCE_UPLOAD_JOURNAL_TABLE:csv_uploader_upload_journal} # таблица журнала загрузок по расписанию table-scheduled-upload-journal: ${PERSISTENCE_SCHEDULED_UPLOAD_JOURNAL_TABLE:csv_uploader_scheduled_upload_journal} table-settings: ${PERSISTENCE_SETTINGS_TABLE:csv_uploader_settings} # таблица хранения настроек сервиса storage-duration: 14d # продолжительность хранения данных в журналах cleanup-interval: 10m # периодичность очистки данных из таблиц журналов max-retry: 3 # количество попыток выполнить запрос, в случае переключения datasource recovery-await-timeout: 10s # таймаут ожидания восстановления datasource recovery-retry-delay: 1s # задержка между попытками восстановить datasource host: ${PS_HOST:localhost} port: ${PS_PORT:9195} http: max-pool-size: ${PS_MAX_POOL_SIZE:8} metadata: # задействовано только если prostore-rest-client.enabled:false free-input: false # true / false разрешить свобоный ввод строки датамарта и таблицы # datamarts: # определяет варианты к выбору датамартов и таблиц, список доступных таблиц определяется для каждого датамарта отдельно # marketing: # tables: [sales] # region36: # tables: [tickets,passengers,cars] # способ хранения пользовательской конфигурации persistence-mode: ${PERSISTENCE_MODE:prostore} # prostore, preferences validation: enabled: ${VALIDATION_ENABLE:true} upload: mandatoryFlk: ${UPLOAD_MANDATORY_FLK:false} uploader: url: ${REST_UPLOADER_URL:http://localhost:8081} # бывший rest-uploader-url upload-uri: /v2/datamarts/{datamart}/tables/{table}/upload delete-uri: /v2/datamarts/{datamart}/tables/{table}/delete status-uri: /v2/requests/{requestId}/status flk-report-uri: /v2/requests/{requestId}/report/ use-multipart: false # Настройки парсера csv файлов csv-parser: # Символ разделителя значений separator: ${CSV_PARSER_SEPARATOR:;} # Символ кавычки quote-char: ${CSV_PARSER_QUOTE_CHAR:"} # Символ экранирования значений escape-char: ${CSV_PARSER_ESCAPE_CHAR:'} # Настройка интерпретации значений как null. Допустимые значения: # - EMPTY_SEPARATORS - пустое значение между двумя разделителями, например ;; # - EMPTY_QUOTES - пустые кавычки, например ;""; # - BOTH - оба варианта # - NEITHER - никогда. Пустая строка всегда определяется как пустая строка field-as-null: ${CSV_PARSER_FIELD_AS_NULL:EMPTY_SEPARATORS} metrics: port: ${METRICS_PORT:9837} .. _csv_uploader_config_params: Параметры конфигурации ^^^^^^^^^^^^^^^^^^^^^^ Настройка конфигурации CSV-uploader осуществляется путем редактирования параметров настроек в файле ``application.yml``. В файле конфигурации CSV-uploader могут быть настроены следующие секции: - ``auth`` - настройки авторизации; - ``http-server`` - настройки порта подключения; - ``file-size`` - ограничение на размер отправляемого файла (мегабайты); - ``environment`` - определяет папку для ошибочных файлов; - ``prostore-rest-client`` - блок параметров конфигурирования взаимодействия с Prostore; - ``metadata`` - добавление поля ввода наименования датамарта и таблицы; - ``persistence-mode`` - настройка хранения пользовательской конфигурации; - ``validation`` - адрес подключения модуля REST-Uploader; - ``upload`` - требование токена для аутентификации в модуле REST-Uploader; - ``csv-parser`` - настройка парсинга CSV; - ``metrics`` - настройка получения метрик. Секция auth ######################### Секция ``auth`` содержит настройки авторизации. Например: .. code-block:: yaml auth: mode: ${AUTH_MODE:DISABLED} studio: ui-prompt: true datamarts: - datamart_mnemonic: datamart25 username: user password: passwd organization_ogrn: ogrn **Параметры конфигурации** - ``mode`` - режим аутентификации, например ``AUTH_MODE:DISABLED``, доступные следующие варианты: - ``DISABLED`` - аутентификация отключена; - ``JWT`` - включает окно запроса JWT на странице "Загрузка" для аутентификации в REST-Uploader (ранее upload.jwt-auth); - ``STUDIO`` - включает аутентификацию по логину и паролю в Datamart Platform Studio; - ``studio`` - настройки аутентификации в режиме STUDIO; - ``ui-prompt`` - если выбран ``true`` запрос логина и пароля на странице "Загрузка", (отдельно для каждого datamart), если выбран ``false``, то используются реквизиты из блока "datamarts"; - ``datamarts`` - Реквизиты для авторизации используемые на странице "Загрузка" если выбран ``ui-prompt: false``, а также при загрузке по расписанию; - ``datamart_mnemonic`` - мнемоника датамарта, например: ``datamart_mnemonic: datamart25``; - ``username`` - имя пользователя, например ``username: user``; - ``password`` - пароль авторизации, например ``password: passwd``; - ``organization_ogrn`` - ОГРН организации, например ``organization_ogrn: ogrn``. Секция http-server ######################### Секция ``http-server`` предназначена для настройки порта и протокола передачи данных (одно из значений **HTTP** или **HTTPS**). Например: .. code-block:: yaml http: port: ${HTTP_PORT:8080} enabled: ${HTTP_ENABLED:true} **Параметры конфигурации** - ``port`` - порт для старта веб-сервера, например ``HTTP_PORT:8080``; - ``enabled`` - статус включения/отключения веб-сервера, например ``HTTP_ENABLED:true``. Секция file-size ################### Секция ``file-size`` отвечает за ограничение на размер отправляемого файла (указывется в мегабайтах). .. code-block:: yaml file-size: restriction: ${SEND_FILE_SIZE_RESTRICTION:1024} **Параметры конфигурации** - ``restriction`` - ограничение на размер отправляемого файла, например ``SEND_FILE_SIZE_RESTRICTION:1024``. Секция environment ################## В секции ``environment`` указывается папка для ошибочных файлов. Например: .. code-block:: yaml environment: error-folder: ${ENVIRONMENT_ERROR_FOLDER:error} **Параметры конфигурации** - ``error-folder`` - папка для ошибочных файлов, например ``ENVIRONMENT_ERROR_FOLDER:error``. Секция prostore-rest-client ########################### В секции ``prostore-rest-client`` реализован блок параметров конфигурирования взаимодействия с Prostore. Например: .. code-block:: yaml prostore-rest-client: enabled: true persistence-datamart: ${PERSISTENCE_DATAMART:persistence} datasource: ${PERSISTENCE_DATASOURCE:} table-upload-journal: ${PERSISTENCE_UPLOAD_JOURNAL_TABLE:csv_uploader_data_upload_journal} table-scheduled-upload-journal: ${PERSISTENCE_SCHEDULED_UPLOAD_JOURNAL_TABLE:csv_uploader_scheduled_upload_journal} table-settings: ${PERSISTENCE_SETTINGS_TABLE:csv_uploader_settings} storage-duration: 14d cleanup-interval: 10m max-retry: 3 recovery-await-timeout: 10s recovery-retry-delay: 1s host: ${PS_HOST:localhost} port: ${PS_PORT:9090} http: max-pool-size: ${PS_MAX_POOL_SIZE:8} **Параметры настроек** - ``enabled`` - включение/ выключение доступа к Prostore - ``persistence-datamart`` - датамарт, в котором будут располагаться таблицы с данными сервиса, например ``PERSISTENCE_DATAMART:persistence``; - ``datasource`` - по умолчанию пусто, берется единственный датасорс из настроек Prostore; - ``table-upload-journal`` - таблица журнала загрузок, например ``PERSISTENCE_UPLOAD_JOURNAL_TABLE:csv_uploader_upload_journal``; - ``table-scheduled-upload-journal`` - таблица журнала загрузок по расписанию, например ``PERSISTENCE_SCHEDULED_UPLOAD_JOURNAL_TABLE:csv_uploader_scheduled_upload_journal``; - ``table-settings`` - таблица хранения настроек сервиса, например ``PERSISTENCE_SETTINGS_TABLE:csv_uploader_settings``; - ``storage-duration`` - продолжительность хранения данных в журналах, например ``14d``, указывается в днях; - ``cleanup-interval`` - периодичность очистки данных из таблиц журналов, например ``10m``, указывается в минутах; - ``max-retry`` - количество попыток выполнить запрос, в случае переключения datasource, например ``3``; - ``recovery-await-timeout`` - таймаут ожидания восстановления datasource, например ``10s``; - ``recovery-retry-delay`` - задержка между попытками восстановить datasource, например ``1s``; - ``host`` - адрес Prostore, например ``PS_HOST:localhost``; - ``port`` - порт Prostore, например ``PS_PORT:9195``; - ``max-pool-size`` - максимальное число подключений к Prostore, например ``PS_MAX_POOL_SIZE:8``. Секция metadata ################## Настройки секции ``metadata`` позволяют отображать поле ручного ввода названия датамарта и таблиц. Задействовано, только если в секции ``prostore-rest-client`` указано ``enabled: false``. Например: .. code-block:: yaml metadata: free-input: false # datamarts: # marketing: # tables: [sales] # region36: # tables: [tickets,passengers,cars] **Параметры конфигурации** - ``free-input`` - разрешить свободный ввод строки датамарта и таблицы, например ``free-input: false``; - ``datamarts`` - определяет варианты к выбору датамартов и таблиц, список доступных таблиц определяется для каждого датамарта отдельно. Секция persistence-mode ############################# В секции ``persistence-mode`` указывается способ хранения пользовательской конфигурации. Например: .. code-block:: yaml persistence-mode: ${PERSISTENCE_MODE:prostore} # prostore, preferences Секция validation ################## В секции ``validation`` реализован механизм настройки валидации ФЛК. Например: .. code-block:: yaml validation: enabled: ${VALIDATION_ENABLE:true} **Параметры конфигурации** - ``enabled`` - подключение к сервису REST-Uploader для выполнения валидации, например ``VALIDATION_ENABLE:true``. Секция upload ############## В секции ``upload`` реализовано включение/ отключение обязательности проверки ФЛК. Например: .. code-block:: yaml upload: mandatoryFlk: ${UPLOAD_MANDATORY_FLK:false} **Параметры конфигурации** - ``jmandatoryFlk`` - включение/ выключение обязательности ФЛК: - ``true`` - проверка ФЛК выполняется всегда, изменение переключателя ФЛК веб-интерфейсе заблокировано; - ``false`` - необходимость проверки ФЛК задается пользователем в веб-интерфейсе. Секция uploader ################# В секции ``uploader`` настройки подключения к стандартному загрузчику/ REST-Upoloader. Например: .. code-block:: yaml uploader: url: ${REST_UPLOADER_URL:http://localhost:8081} # upload-uri: /v2/datamarts/{datamart}/tables/{table}/upload delete-uri: /v2/datamarts/{datamart}/tables/{table}/delete status-uri: /v2/requests/{requestId}/status flk-report-uri: /v2/requests/{requestId}/report/ use-multipart: false **Параметры конфигурации** - ``url`` - предыдущий rest-uploader-url; - ``upload-uri`` - метод загрузки; - ``delete-uri`` - метод удаления; - ``status-uri`` - метод получения статуса; - ``flk-report-uri`` - метод получения отчета ФЛК. Секция csv-parser ################# .. note:: При загрузке файлов с форматно-логическим контролем, важно, чтобы настройки секции csv-parser должны быть синхронизированы с соответствующими настройками `csvparser Prostore `_. Так же настройки секции csv-parser должны быть одинаковыми в модулях CSV-Uploader (если используется его UI), REST-Uploader и DATA-Uploader. Секция ``csv-parser`` - настройка парсинга CSV. Например: .. code-block:: yaml # Настройки парсера csv файлов csv-parser: # Символ разделителя значений separator: ${CSV_PARSER_SEPARATOR:;} # Символ кавычки quote-char: ${CSV_PARSER_QUOTE_CHAR:"} # Символ экранирования значений escape-char: ${CSV_PARSER_ESCAPE_CHAR:'} # Настройка интерпретации значений как null. Допустимые значения: # - EMPTY_SEPARATORS - пустое значение между двумя разделителями, например ;; # - EMPTY_QUOTES - пустые кавычки, например ;""; # - BOTH - оба варианта # - NEITHER - никогда. Пустая строка всегда определяется как пустая строка field-as-null: ${CSV_PARSER_FIELD_AS_NULL:EMPTY_SEPARATORS} **Параметры конфигурации** - ``separator`` - Символ разделителя значений, например ``CSV_PARSER_SEPARATOR:;``; - ``quote-char`` - символ кавычки, например ``CSV_PARSER_QUOTE_CHAR:"``; - ``escape-char`` - Символ экранирования значений, например ``CSV_PARSER_ESCAPE_CHAR:'``; Настройка интерпретации значений как null. Допустимые значения: - ``EMPTY_SEPARATORS`` - пустое значение между двумя разделителями, например ;; - ``EMPTY_QUOTES`` - пустые кавычки, например ;""; - ``BOTH`` - оба варианта; - ``NEITHER`` - никогда. Пустая строка всегда определяется как пустая строка. - ``field-as-null`` - способ определения null поля, например ``CSV_PARSER_FIELD_AS_NULL:EMPTY_SEPARATORS``. **Дополнительное описание параметров** 1. Параметр ``CSV_PARSER_ESCAPE_CHAR`` работает следующим образом: если символ экранирования и символ кавычки равны ``"``, то будет использован **RFC4180Parser**, который считывает все символы между двумя двойными кавычками, при этом двойная кавычка в тексте поля должна быть экранирована двойной кавычкой (Например ``"поле, ""содержащее двойную кавычку"""`` будет считано как ``поле, "содержащее двойную кавычку"``). В противном случае будет использован CSVParser, использующий символ экранирования для обозначения "непечатаемых символов". 2. Параметр ``CSV_PARSER_FIELD_AS_NULL`` может принимать следующие значения: - ``EMPTY_SEPARATORS`` - два разделителя полей (см. csv-parser/separator) подряд считаются null. Например: строка [aaa,,ccc] содержит значения ["aaa", null, "bbb"], а строка [aaa,"",ccc] содержит значения ["aaa", "", "bbb"]. - ``EMPTY_QUOTES`` - два "ограничителя строки" (см. csv-parser/escape-char) подряд считаются null. Например: строка [aaa,"",ccc] содержит значения ["aaa", null, "bbb"], а строка [aaa,,ccc] содержит значения ["aaa", "", "bbb"]. - ``BOTH`` - оба варианта (см. ``EMPTY_SEPARATORS`` и ``EMPTY_QUOTES``) считаются null. Например: обе строки [aaa,"",ccc] и [aaa,,bbb] содержат одинаковое значение ["aaa", null, "bbb"]. - ``NEITHER`` - ни один из вариантов (см. ``EMPTY_SEPARATORS`` и ``EMPTY_QUOTES``) не считается null. Например: обе строки [aaa,"",ccc] и [aaa,,bbb] содержат одинаковое значение ["aaa", "", "bbb"]. Секция metrics ############## Секция ``metrics`` предназначена для настройки параметров метрик. Например: .. code-block:: yaml metrics: port: ${METRICS_PORT:9837} **Параметры конфигурации** - ``port`` - Порт для метрик, например ``METRICS_PORT:9837``.