.. _query.rq: query.rq ~~~~~~~~ ``query.rq`` - Топик sql запросов на исполнение **Структура сообщения** .. code-block:: yaml 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-схема сообщения** .. code-block:: yaml 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