query.rq

query.rq - Топик sql запросов на исполнение

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

datamartExecuteQueryRequestMessage:
  description: Исполнение sql запроса на витрине
  schemaFormat: 'application/vnd.apache.avro;version=1.9.0'
  bindings:
    kafka:
      key:
        type: string
        format: uuid
        description: Уникальный идентификатор подзапроса
  headers:
    type: object
    properties:
      MESSAGE_TYPE:
        description: Тип сообщения
        type: string
        const: DatamartExecuteQueryRequest:0.1
      REQUEST_ID:
        description: Идентификатор запроса
        type: string
      QUERY_DEADLINE:
        description: Время в миллисекундах от эпохи, до которого запрос должен быть выполнен
        type: string
        format: int64
      AGENT_CONSUMER_ID:
        description: Мнемоника потребителя (мнемоника агента)
        type: string
      QUERY_MNEMONIC:
        description: '<Полная мнемоника РЗ>.<версия РЗ>'
        type: string
  payload:
    $ref: '#/components/schemas/datamartExecuteQueryRequest'
  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: Табличные параметры запроса
      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