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