procedure.query.rq

procedure.query.rq - Топик регламентированных запросов на исполнение

Структура сообщения

examples:
  - name: simple
    summary: Простой запрос на исполнение без параметров
    headers:
      MESSAGE_TYPE: DatamartExecuteQueryRequest:0.1
    payload:
      requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
      subRequestId: 608c5a5a-01d4-4439-8220-dda41a8519fe
      replyTo: agent-fias
      datamartMnemonic: fias
      sql: select * from v1_addrobj
      parameters: [ ]
      namedParams: [ ]
      tableParams: [ ]
      isForEstimation: false
      rowCountThreshold: -1
      customerId: aaa
      customerOgrn: ""
      queryMnemonic: fias.selectAllAddrobj.1.0
  - name: estimation
    summary: Запрос на оценку
    headers:
      MESSAGE_TYPE: DatamartExecuteQueryRequest:0.1
    payload:
      requestId: 403eada5-05f6-480c-bca9-03328091efeb
      subRequestId: 451000b8-dff2-4a1b-ab1b-42500a70d232
      replyTo: agent-fias
      datamartMnemonic: fias
      sql: select * from v1_addrobj
      parameters: [ ]
      namedParams: [ ]
      tableParams: [ ]
      isForEstimation: true
      rowCountThreshold: 1000
      customerId:
        string: agent-fias
      customerOgrn:
        string: "1053600591197"
      queryMnemonic:
        string: fias.selectAllAddrobj.1.0
  - name: complex
    summary: Запрос с параметрами и табличными параметрами
    headers:
      MESSAGE_TYPE: DatamartExecuteQueryRequest:0.1
    payload:
      requestId: 68758a92-0027-4258-bf17-aa3d24f85094
      subRequestId: 96e6eb99-7ff1-4efa-abae-ef1c5744b723
      replyTo: agent-fias
      datamartMnemonic: fias
      sql: select * from v1_addrobj where oktmo = ? and name = @tbl.fullname
      parameters:
        - type: STRING
          value:
            string: asdasdasd
        - type: LONG
          value: null
      namedParams: [ ]
      tableParams: [ ]
      isForEstimation: false
      rowCountThreshold: -1
      customerId:
        string: agent-fias
      customerOgrn:
        string: "1053600591197"
      queryMnemonic:
        string: fias.selectAddrobjWithParams.1.0
  - name: complex_named
    summary: Запрос с именованными параметрами
    headers:
      MESSAGE_TYPE: DatamartExecuteQueryRequest:0.1
    payload:
      requestId: 12358a92-0027-4258-bf17-aa3d24f85094
      subRequestId: 56e6eb99-7ff1-4efa-abae-ef1c5744b723
      replyTo: agent-fias
      datamartMnemonic: fias
      sql: select * from @tbl.fullname el LEFT JOIN v1_addrobj where oktmo = @p1 and kod = @p2
      parameters: [ ]
      namedParams:
        - name: p1
          type: STRING
          value:
            string: asdasdasd
        - name: p2
          type: LONG
          value: null
      tableParams: [ ]
      isForEstimation: false
      rowCountThreshold: -1
      customerId:
        string: agent-fias
      customerOgrn:
        string: "1053600591197"
      queryMnemonic:
        string: fias.selectAddrobjWithParams.1.0
  - name: deadline
    summary: Простой запрос на исполнение без параметров
    headers:
      MESSAGE_TYPE: DatamartExecuteQueryRequest:0.1
      QUERY_DEADLINE: 1629289006904
    payload:
      requestId: 2e8c8ab2-44db-4dcb-8ae5-2365121b4e14
      subRequestId: 608c5a5a-01d4-4439-8220-dda41a8519fe
      replyTo: agent-fias
      datamartMnemonic: fias
      sql: select * from v1_addrobj
      parameters: [ ]
      namedParams: [ ]
      tableParams: [ ]
      isForEstimation: false
      rowCountThreshold: -1
      customerId: agent-fias
      customerOgrn: "1053600591197"
      queryMnemonic: fias.selectAllWithDeadline.1.0

Avro-схема сообщения

datamartExecuteQueryRequest:
  schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
  type: record
  name: QueryRequest
  namespace: datamart.query
  fields:
    - name: requestId
      description: Уникальный идентификатор запроса
      type:
        type: string
        logicalType: uuid
    - name: subRequestId
      description: Уникальный идентификатор подзапроса
      type:
        type: string
        logicalType: uuid
    - name: replyTo
      description: Служебная информация маршрутизации сообщения. Ответ, формируемый витриной, обязан содержать переданное значение без каких либо искажений
      type: string
    - name: datamartMnemonic
      description: Мнемоника витрины, к которой выполняется запрос
      type: string
    - name: sql
      description: SQL запрос на исполнение, либо имя хранимой процедуры для регламентированных запросов
      type: string
    - name: parameters
      description: Параметры к SQL запросу
      default: [ ]
      type:
        type: array
        items:
          type: record
          name: QueryParameter
          description: Описание параметра
          fields:
            - name: type
              type: string
              description: Тип параметра
              enum:
                - BIG_DECIMAL
                - BINARY
                - BOOLEAN
                - DATE
                - DOUBLE
                - FLOAT
                - INTEGER
                - LONG
                - SHORT
                - STRING
                - TIME
                - TIMESTAMP
            - name: value
              description: Значение параметра
              type:
                - string
                - 'null'
    - name: namedParams
      description: Именованные параметры запроса
      default: [ ]
      type:
        type: array
        items:
          type: record
          name: NamedParam
          description: Описание именованного параметра
          fields:
            - name: name
              description: Имя (мнемоника) параметра
              type: string
            - name: type
              type: string
              description: Тип параметра
              enum:
                - BIG_DECIMAL
                - BINARY
                - BOOLEAN
                - DATE
                - DOUBLE
                - FLOAT
                - INTEGER
                - LONG
                - SHORT
                - STRING
                - TIME
                - TIMESTAMP
            - name: value
              description: Значение параметра
              type:
                - string
                - 'null'
    - name: tableParams
      description: \use only Datamart\ Табличные параметры запроса
      default: [ ]
      type:
        type: array
        items:
          type: record
          name: TableParam
          fields:
            - name: id
              description: Уникальный идентификатор
              type:
                type: string
                logicalType: uuid
            - name: name
              description: Имя параметра
              type: string
            - name: columns
              description: Описание колонок таблицы
              type:
                type: array
                items:
                  type: record
                  description: Описание колонки
                  name: TableParamColumnInfo
                  fields:
                    - name: name
                      type: string
                      description: Имя колонки
                    - name: type
                      type: string
                      description: Тип атрибута
                      enum:
                        - BIG_DECIMAL
                        - BINARY
                        - BOOLEAN
                        - DATE
                        - DOUBLE
                        - FLOAT
                        - INTEGER
                        - LONG
                        - SHORT
                        - STRING
                        - TIME
                        - TIMESTAMP
    - name: isForEstimation
      description: Признак необходимости вернуть статистику по запросу в качестве результата. В случае, если оценка по результату исполнения sql запроса не превышает rowCountThreshold записей, должен сразу отдаваться результат без отправки оценки в ядро
      type: boolean
      default: false
    - name: rowCountThreshold
      description: Максимальное оценочное количество строк результата, при превышении которого возвращается статистика по запросу. Если оценка по запросу не превышет данный параметр, витрина сразу возвращает ответ с результатом. Заполняется в случае isForEstimation = true
      type: long
      default: -1
    - name: customerId
      description: Мнемоника ИС Потребителя
      type:
        - 'null'
        - string
      default: null
    - name: customerOgrn
      description: ОГРН ИС Потребителя
      type:
        - 'null'
        - string
      default: null
    - name: queryMnemonic
      description: 'Мнемоника РЗ, сформированная по правилу: <мнемоника витрины>.<мнемоника РЗ>.<версия РЗ> Если запрос распределенный, то формируется по правилу: podd.<мнемоника РЗ>.<версия РЗ>'
      type:
        - 'null'
        - string
      default: null