2. Конфигурация CSV-uploader (application.yml)

Файл application.yml – основной конфигурационный файл модуля CSV-uploader, в котором задана логика и порядок работы загрузчика, а также другие настройки необходимые для корректной работы адаптера.

2.1. Пример файла application.yml

# Настройки авторизации
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}

3. Параметры конфигурации

Настройка конфигурации 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 - настройка получения метрик.

3.1. Секция auth

Секция auth содержит настройки авторизации.

Например:

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.

3.2. Секция http-server

Секция http-server предназначена для настройки порта и протокола передачи данных (одно из значений HTTP или HTTPS).

Например:

http:
        port: ${HTTP_PORT:8080}
        enabled: ${HTTP_ENABLED:true}

Параметры конфигурации

  • port - порт для старта веб-сервера, например HTTP_PORT:8080;

  • enabled - статус включения/отключения веб-сервера, например HTTP_ENABLED:true.

3.3. Секция file-size

Секция file-size отвечает за ограничение на размер отправляемого файла (указывется в мегабайтах).

file-size:
        restriction: ${SEND_FILE_SIZE_RESTRICTION:1024}

Параметры конфигурации

  • restriction - ограничение на размер отправляемого файла, например SEND_FILE_SIZE_RESTRICTION:1024.

3.4. Секция environment

В секции environment указывается папка для ошибочных файлов.

Например:

environment:
        error-folder: ${ENVIRONMENT_ERROR_FOLDER:error}

Параметры конфигурации

  • error-folder - папка для ошибочных файлов, например ENVIRONMENT_ERROR_FOLDER:error.

3.5. Секция prostore-rest-client

В секции prostore-rest-client реализован блок параметров конфигурирования взаимодействия с Prostore.

Например:

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.

3.6. Секция metadata

Настройки секции metadata позволяют отображать поле ручного ввода названия датамарта и таблиц. Задействовано, только если в секции prostore-rest-client указано enabled: false.

Например:

metadata:
  free-input: false
#  datamarts:
#    marketing:
#      tables: [sales]
#    region36:
#      tables: [tickets,passengers,cars]

Параметры конфигурации

  • free-input - разрешить свободный ввод строки датамарта и таблицы, например free-input: false;

  • datamarts - определяет варианты к выбору датамартов и таблиц, список доступных таблиц определяется для каждого датамарта отдельно.

3.7. Секция persistence-mode

В секции persistence-mode указывается способ хранения пользовательской конфигурации.

Например:

persistence-mode: ${PERSISTENCE_MODE:prostore} # prostore, preferences

3.8. Секция validation

В секции validation реализован механизм настройки валидации ФЛК.

Например:

validation:
  enabled: ${VALIDATION_ENABLE:true}

Параметры конфигурации

  • enabled - подключение к сервису REST-Uploader для выполнения валидации, например VALIDATION_ENABLE:true.

3.9. Секция upload

В секции upload реализовано включение/ отключение обязательности проверки ФЛК.

Например:

    upload:
mandatoryFlk: ${UPLOAD_MANDATORY_FLK:false}

Параметры конфигурации

  • jmandatoryFlk - включение/ выключение обязательности ФЛК:

    • true - проверка ФЛК выполняется всегда, изменение переключателя ФЛК веб-интерфейсе заблокировано;

    • false - необходимость проверки ФЛК задается пользователем в веб-интерфейсе.

3.10. Секция uploader

В секции uploader настройки подключения к стандартному загрузчику/ REST-Upoloader.

Например:

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 - метод получения отчета ФЛК.

3.11. Секция csv-parser

Примечание

При загрузке файлов с форматно-логическим контролем, важно, чтобы настройки секции csv-parser должны быть синхронизированы с соответствующими настройками csvparser Prostore. Так же настройки секции csv-parser должны быть одинаковыми в модулях CSV-Uploader (если используется его UI), REST-Uploader и DATA-Uploader.

Секция csv-parser - настройка парсинга CSV.

Например:

# Настройки парсера 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»].

3.12. Секция metrics

Секция metrics предназначена для настройки параметров метрик.

Например:

metrics:
  port: ${METRICS_PORT:9837}

Параметры конфигурации

  • port - Порт для метрик, например METRICS_PORT:9837.