Named Queries
Para reutilizar queries, recomendamos fortemente o uso de Named Queries. A ideia é criar queries e salvar o template no servidor, centralizando seu uso. Você pode utilizar a mesma query em diferentes lugares sem duplicar código, além de ter a flexibilidade de alterar a query no servidor sem precisar redistribuí-la.
Os endpoints utilizados para gerenciar named queries estão disponíveis em:
JSON Request
/api/v2/named_queries",
"language": "text"
Payload (JSON)
- mdmQueryName: O nome da query, utilizado para executar queries.
- mdmType: O tipo de dado (tabela) sobre o qual a query é executada.
- mdmFilterQuery: A query em si, explicada acima neste documento.
- mdmReturnFields: Especifica os campos que serão retornados por esta named query. Ao executar a Named Query, a requisição pode sobrescrever este atributo definindo campos diferentes.
O formato de uma named query é o seguinte:
JSON Request
{
"mdmType": "studentGolden",
"mdmQueryName": "listStudents",
"mdmQueryDescription": "",
"mdmQueryFields": {},
"mdmFilterQuery": {
"mustList": [
{
"mdmFilterType": "TYPE_FILTER",
"mdmValue": "studentGolden"
},
{
"mdmFilterType": "TERM_FILTER",
"mdmKey": "mdmGoldenFieldAndValues.mdmname.raw",
"mdmValue": "{{name}}"
}
],
"minimumShouldMatch": 1,
"resolveRelationships": false,
"excludeMergePending": false,
"mdmReturnFields": ["mdmGoldenFieldAndValues"]
}
}
JSON Response
{
"mdmType": "studentGolden",
"mdmQueryName": "listStudents",
"mdmQueryDescription": "",
"mdmQueryFields": {},
"mdmFilterQuery": {
"mustList": [
{
"mdmFilterType": "TYPE_FILTER",
"mdmValue": "studentGolden"
},
{
"mdmFilterType": "TERM_FILTER",
"mdmKey": "mdmGoldenFieldAndValues.mdmname.raw",
"mdmValue": "{{nome}}"
}
],
"minimumShouldMatch": 1,
"resolveRelationships": false,
"excludeMergePending": false
},
"mdmCacheTimeInSeconds": 30,
"mdmCacheRevalidationTimeInSeconds": 15,
"mdmReturnFields": ["mdmGoldenFieldAndValues"],
"mdmTimeoutInSeconds": 55,
"mdmTags": [],
"mdmId": "a4ae68b044ab11e88e1f0242bafa62d0",
"mdmEntityType": "mdmNamedQuery",
"mdmCreated": "2018-04-20T15:01:02Z",
"mdmLastUpdated": "2018-04-20T15:01:02Z",
"mdmTenantId": "b9184120c3de11e7afee0242ac110003"
}
Strings marcadas como {{name}} são substituídas por parâmetros quando as named queries são executadas. Se você deseja especificar um parâmetro obrigatório, precisa marcá-lo como {{*name}}. Parâmetros não obrigatórios que não forem especificados serão ignorados em tempo de execução.
Para executar uma named query, o endpoint é POST /api/v2/queries/named/{queryName}:
Os parâmetros estão descritos abaixo.
Paginação (Query Parameters)
- query_name: Nome da query (mdmQueryName).
- offset: Posição do registro a partir da qual começar a obter resultados.
- pageSize: Número de registros a obter (limitado a 1000).
- sortBy: Campo para ordenar as informações (Ex: mdmGoldenFieldAndValues.name, sortBy name).
- sortOrder: Caso sortBy seja usado, a ordem a considerar (Valores: ASC ou DESC).
- indexType: Índice de onde consultar os dados (STAGING/MASTER).
- fields: Campos retornados na resposta.
- tags: Filtrar por tag do Data Mode
- body: Json Request
No exemplo abaixo, é executada a named query "listStudents" sem parâmetros. Neste caso, todos os registros de estudantes serão recuperados.
query_name = listStudents
JSON Request
{}
JSON Response
{
"count": 7,
"totalHits": 7,
"took": 2,
"hits": [
{
"mdmCounterForEntity": 20,
"mdmGoldenFieldAndValues": {
"mdmbirthday": "0083-10-14T00:00:00Z",
"gender": "M",
"staudentid": "3",
"phone": [
{
"mdmphonenumber": "91187226",
"mdmphonetype": "1"
},
{
"mdmphonenumber": "Residencial",
"mdmphonetype": "4085075432"
}
],
"mdmaddress": [
{
"mdmstate": "CA",
"mdmzipcode": "94032",
"mdmcountry": "US",
"mdmcity": "Mountain View",
"mdmaddress1": "650 Castro Street",
"mdmaddresstype": "Residencial"
}
],
"siblingsnumber": "1",
"mdmname": "Antônio dos Santos"
},
"mdmPotentialMergePending": false,
"mdmEntityType": "studentGolden",
"mdmApplicationIdMasterRecordId": {
"bab945f0c3e911e792b20242ac110003": [
"5ac37080c3ee11e792b20242ac110003"
],
"0a0829172fc2433c9aa26460c31b78f0": [
"e7434fd905c67f408f2834304e676e3e"
]
},
"_score": 1.7320508,
"mdmLastUpdated": "2018-04-04T14:23:40.833Z",
"mdmTenantId": "b9184120c3de11e7afee0242ac110003",
"mdmMasterCount": 2,
"mdmProfileTitle": "3 Antônio dos Santos",
"mdmFlaggedFieldIds": [],
"mdmApplicationIdMasterRecord": {},
"mdmCreated": "2017-11-07T19:03:35Z",
"mdmApplicationIdStagingTypeMasterRecordId": {
"bab945f0c3e911e792b20242ac110003_student": [
"5ac37080c3ee11e792b20242ac110003"
]
},
"mdmCrosswalk": [
{
"mdmApplicationId": "bab945f0c3e911e792b20242ac110003",
"mdmConnectorId": "",
"mdmCrossreference": {
"student": {
"code": "3"
}
}
}
],
"mdmErrors": [],
"mdmEntityTemplateId": "57e61090c3e211e792b20242ac110003",
"mdmPreviousIds": [],
"mdmId": "5ac45ae0c3ee11e792b20242ac110003"
},
{
"mdmCounterForEntity": 19,
"mdmGoldenFieldAndValues": {
"mdmbirthday": "2011-09-11T00:00:00Z",
"gender": "M",
"staudentid": "5",
"phone": [
{
"mdmphonenumber": "Residencial",
"mdmphonetype": "47987654357"
}
],
"mdmaddress": [
{
"mdmstate": "SC",
"mdmzipcode": "89233004",
"mdmcountry": "Brasil",
"mdmcity": "Joinville",
"mdmaddress1": "Av Santos Dumont 935",
"mdmaddresstype": "Residencial"
}
],
"siblingsnumber": "3",
"mdmname": "Eduardo da Silva"
},
"mdmPotentialMergePending": false,
"mdmEntityType": "studentGolden",
"mdmApplicationIdMasterRecordId": {
"bab945f0c3e911e792b20242ac110003": [
"5acdf7d0c3ee11e792b20242ac110003"
],
"0a0829172fc2433c9aa26460c31b78f0": [
"aa7da14444f8531fa4963c370ac84adf"
]
},
"_score": 1.7320508,
"mdmLastUpdated": "2018-04-04T13:48:29.987Z",
"mdmTenantId": "b9184120c3de11e7afee0242ac110003",
"mdmMasterCount": 2,
"mdmProfileTitle": "5 Eduardo da Silva",
"mdmFlaggedFieldIds": [],
"mdmApplicationIdMasterRecord": {},
"mdmCreated": "2017-11-07T19:03:35Z",
"mdmApplicationIdStagingTypeMasterRecordId": {
"bab945f0c3e911e792b20242ac110003_student": [
"5acdf7d0c3ee11e792b20242ac110003"
]
},
"mdmCrosswalk": [
{
"mdmApplicationId": "bab945f0c3e911e792b20242ac110003",
"mdmConnectorId": "",
"mdmCrossreference": {
"student": {
"code": "5"
}
}
}
],
"mdmErrors": [],
"mdmEntityTemplateId": "57e61090c3e211e792b20242ac110003",
"mdmPreviousIds": [],
"mdmId": "5acf0940c3ee11e792b20242ac110003"
},
{
"mdmCounterForEntity": 27,
"mdmGoldenFieldAndValues": {
"mdmbirthday": "0058-09-05T00:00:00Z",
"gender": "",
"staudentid": "7",
"phone": [
{
"mdmphonenumber": "Residencial",
"mdmphonetype": "11976593432"
}
],
"mdmaddress": [
{
"mdmstate": "SP",
"numberaddress": "110",
"mdmzipcode": "89233004",
"mdmcountry": "Brasil",
"mdmaddress2": "",
"mdmcity": "Sao Paulo",
"mdmaddress1": "Av Blumenau",
"mdmaddresstype": "Residencial"
}
],
"siblingsnumber": "0",
"mdmname": "Joao Pereira"
},
"mdmPotentialMergePending": false,
"mdmEntityType": "studentGolden",
"mdmApplicationIdMasterRecordId": {
"bab945f0c3e911e792b20242ac110003": [
"5ad5e710c3ee11e792b20242ac110003"
],
"0a0829172fc2433c9aa26460c31b78f0": [
"d01d5b92021bd878ba9f2d182ecad488"
]
},
"_score": 1.7320508,
"mdmLastUpdated": "2018-04-05T23:24:22.537Z",
"mdmTenantId": "b9184120c3de11e7afee0242ac110003",
"mdmMasterCount": 2,
"mdmProfileTitle": "7 Joao Pereira",
"mdmFlaggedFieldIds": [],
"mdmApplicationIdMasterRecord": {},
"mdmCreated": "2017-11-07T19:03:35Z",
"mdmApplicationIdStagingTypeMasterRecordId": {
"bab945f0c3e911e792b20242ac110003_student": [
"5ad5e710c3ee11e792b20242ac110003"
]
},
"mdmCrosswalk": [
{
"mdmApplicationId": "bab945f0c3e911e792b20242ac110003",
"mdmConnectorId": "",
"mdmCrossreference": {
"student": {
"code": "7"
}
}
}
],
"mdmErrors": [],
"mdmEntityTemplateId": "57e61090c3e211e792b20242ac110003",
"mdmPreviousIds": [],
"mdmId": "5ad6d170c3ee11e792b20242ac110003"
},
{
"mdmCounterForEntity": 30,
"mdmGoldenFieldAndValues": {
"mdmbirthday": "0088-01-03T00:00:00Z",
"gender": "F",
"staudentid": "1",
"phone": [
{
"mdmphonenumber": "Residencial",
"mdmphonetype": "47998493432"
}
],
"mdmaddress": [
{
"mdmstate": "SC",
"numberaddress": "100",
"mdmzipcode": "89233004",
"mdmcountry": "Brazil",
"mdmaddress2": "",
"mdmcity": "Joinville",
"mdmaddress1": "Rua Sao Paulo 123",
"mdmaddresstype": "Residencial"
}
],
"siblingsnumber": "2",
"mdmname": "Joana Silva da Cunha"
},
"mdmPotentialMergePending": false,
"mdmEntityType": "studentGolden",
"mdmApplicationIdMasterRecordId": {
"bab945f0c3e911e792b20242ac110003": [
"5aac8d20c3ee11e792b20242ac110003"
],
"0a0829172fc2433c9aa26460c31b78f0": [
"82e8d5670d0d179255fb523bb85cc0e9"
]
},
"_score": 1.7320508,
"mdmLastUpdated": "2018-04-07T17:22:58.053Z",
"mdmTenantId": "b9184120c3de11e7afee0242ac110003",
"mdmMasterCount": 2,
"mdmProfileTitle": "1 Joana Silva da Cunha",
"mdmFlaggedFieldIds": [],
"mdmApplicationIdMasterRecord": {},
"mdmCreated": "2017-11-07T19:03:34Z",
"mdmApplicationIdStagingTypeMasterRecordId": {
"bab945f0c3e911e792b20242ac110003_student": [
"5aac8d20c3ee11e792b20242ac110003"
]
},
"mdmCrosswalk": [
{
"mdmApplicationId": "bab945f0c3e911e792b20242ac110003",
"mdmConnectorId": "",
"mdmCrossreference": {
"student": {
"code": "1"
}
}
}
],
"mdmErrors": [],
"mdmEntityTemplateId": "57e61090c3e211e792b20242ac110003",
"mdmPreviousIds": [],
"mdmId": "5ab4ca80c3ee11e792b20242ac110003"
},
{
"mdmCounterForEntity": 29,
"mdmGoldenFieldAndValues": {
"mdmbirthday": "0097-04-06T00:00:00Z",
"gender": "F",
"staudentid": "6",
"phone": [
{
"mdmphonenumber": "Residencial",
"mdmphonetype": "11998344432"
}
],
"mdmaddress": [
{
"mdmstate": "SP",
"mdmzipcode": "89233004",
"mdmcountry": "Brasil",
"mdmcity": "Sao Paulo",
"mdmaddress1": "Girassol 343",
"mdmaddresstype": "Residencial"
}
],
"siblingsnumber": "2",
"mdmname": "Juliana da Rosa Silva"
},
"mdmPotentialMergePending": false,
"mdmEntityType": "studentGolden",
"mdmApplicationIdMasterRecordId": {
"bab945f0c3e911e792b20242ac110003": [
"5ad1ef70c3ee11e792b20242ac110003"
],
"0a0829172fc2433c9aa26460c31b78f0": [
"90f6e072dc37fdf557ddfca2b378bf8a"
]
},
"_score": 1.7320508,
"mdmLastUpdated": "2018-04-07T17:22:35.564Z",
"mdmTenantId": "b9184120c3de11e7afee0242ac110003",
"mdmMasterCount": 2,
"mdmProfileTitle": "6 Juliana da Rosa Silva",
"mdmFlaggedFieldIds": [],
"mdmApplicationIdMasterRecord": {},
"mdmCreated": "2017-11-07T19:03:35Z",
"mdmApplicationIdStagingTypeMasterRecordId": {
"bab945f0c3e911e792b20242ac110003_student": [
"5ad1ef70c3ee11e792b20242ac110003"
]
},
"mdmCrosswalk": [
{
"mdmApplicationId": "bab945f0c3e911e792b20242ac110003",
"mdmConnectorId": "",
"mdmCrossreference": {
"student": {
"code": "6"
}
}
}
],
"mdmErrors": [],
"mdmEntityTemplateId": "57e61090c3e211e792b20242ac110003",
"mdmPreviousIds": [],
"mdmId": "5ad300e0c3ee11e792b20242ac110003"
},
{
"mdmCounterForEntity": 28,
"mdmGoldenFieldAndValues": {
"mdmbirthday": "0091-11-03T00:00:00Z",
"gender": "F",
"staudentid": "2",
"phone": [
{
"mdmphonenumber": "Residencial",
"mdmphonetype": "47998493432"
}
],
"mdmaddress": [
{
"mdmstate": "SC",
"mdmzipcode": "89233004",
"mdmcountry": "Brazil",
"mdmcity": "Joinville",
"mdmaddress1": "Rua Jasmim 543",
"mdmaddresstype": "Residencial"
}
],
"siblingsnumber": "2",
"mdmname": "Carla Paula"
},
"mdmPotentialMergePending": false,
"mdmEntityType": "studentGolden",
"mdmApplicationIdMasterRecordId": {
"bab945f0c3e911e792b20242ac110003": [
"5abeb590c3ee11e792b20242ac110003"
],
"0a0829172fc2433c9aa26460c31b78f0": [
"57f39965487768e3defde4238dc2a082"
]
},
"_score": 1.7320508,
"mdmLastUpdated": "2018-04-07T17:22:06.262Z",
"mdmTenantId": "b9184120c3de11e7afee0242ac110003",
"mdmMasterCount": 2,
"mdmProfileTitle": "2 Carla Paula",
"mdmFlaggedFieldIds": [],
"mdmApplicationIdMasterRecord": {},
"mdmCreated": "2017-11-07T19:03:35Z",
"mdmApplicationIdStagingTypeMasterRecordId": {
"bab945f0c3e911e792b20242ac110003_student": [
"5abeb590c3ee11e792b20242ac110003"
]
},
"mdmCrosswalk": [
{
"mdmApplicationId": "bab945f0c3e911e792b20242ac110003",
"mdmConnectorId": "",
"mdmCrossreference": {
"student": {
"code": "2"
}
}
}
],
"mdmErrors": [],
"mdmEntityTemplateId": "57e61090c3e211e792b20242ac110003",
"mdmPreviousIds": [],
"mdmId": "5abfc700c3ee11e792b20242ac110003"
},
{
"mdmCounterForEntity": 31,
"mdmGoldenFieldAndValues": {
"mdmbirthday": "0083-02-23T00:00:00Z",
"gender": "F",
"staudentid": "4",
"phone": [
{
"mdmphonenumber": "Residencial",
"mdmphonetype": "4085075432"
}
],
"mdmaddress": [
{
"mdmstate": "CA",
"mdmzipcode": "94032",
"mdmcountry": "US",
"mdmcity": "San Jose",
"mdmaddress1": "3421 El Camino Real",
"mdmaddresstype": "Residencial"
}
],
"siblingsnumber": "3",
"mdmname": "Ana dos Santos"
},
"mdmPotentialMergePending": false,
"mdmEntityType": "studentGolden",
"mdmApplicationIdMasterRecordId": {
"bab945f0c3e911e792b20242ac110003": [
"5ac67dc0c3ee11e792b20242ac110003"
],
"0a0829172fc2433c9aa26460c31b78f0": [
"51a2247e1a8ed06579c35754af9e13a9"
]
},
"_score": 1.7320508,
"mdmLastUpdated": "2018-04-07T17:23:27.385Z",
"mdmTenantId": "b9184120c3de11e7afee0242ac110003",
"mdmMasterCount": 2,
"mdmProfileTitle": "4 Ana dos Santos",
"mdmFlaggedFieldIds": [],
"mdmApplicationIdMasterRecord": {},
"mdmCreated": "2017-11-07T19:03:35Z",
"mdmApplicationIdStagingTypeMasterRecordId": {
"bab945f0c3e911e792b20242ac110003_student": [
"5ac67dc0c3ee11e792b20242ac110003"
]
},
"mdmCrosswalk": [
{
"mdmApplicationId": "bab945f0c3e911e792b20242ac110003",
"mdmConnectorId": "",
"mdmCrossreference": {
"student": {
"code": "4"
}
}
}
],
"mdmErrors": [],
"mdmEntityTemplateId": "57e61090c3e211e792b20242ac110003",
"mdmPreviousIds": [],
"mdmId": "5acaea90c3ee11e792b20242ac110003"
}
],
"aggs": {}
}
No próximo exemplo, "listStudents" receberá "Joao Pereira" como parâmetro. Neste caso, retornará apenas o registro do estudante relacionado a "Joao Pereira".
query_name = listStudents
JSON Request
{"name":"Joao Pereira"}
JSON Response
{
"count": 1,
"totalHits": 1,
"took": 1,
"hits": [
{
"mdmCounterForEntity": 27,
"mdmGoldenFieldAndValues": {
"mdmbirthday": "0058-09-05T00:00:00Z",
"gender": "",
"staudentid": "7",
"phone": [
{
"mdmphonenumber": "Residencial",
"mdmphonetype": "11976593432"
}
],
"mdmaddress": [
{
"mdmstate": "SP",
"numberaddress": "110",
"mdmzipcode": "89233004",
"mdmcountry": "Brasil",
"mdmaddress2": "",
"mdmcity": "Sao Paulo",
"mdmaddress1": "Av Blumenau",
"mdmaddresstype": "Residencial"
}
],
"siblingsnumber": "0",
"mdmname": "Joao Pereira"
},
"mdmPotentialMergePending": false,
"mdmEntityType": "studentGolden",
"mdmApplicationIdMasterRecordId": {
"bab945f0c3e911e792b20242ac110003": [
"5ad5e710c3ee11e792b20242ac110003"
],
"0a0829172fc2433c9aa26460c31b78f0": [
"d01d5b92021bd878ba9f2d182ecad488"
]
},
"_score": 8.354703,
"mdmLastUpdated": "2018-04-05T23:24:22.537Z",
"mdmTenantId": "b9184120c3de11e7afee0242ac110003",
"mdmMasterCount": 2,
"mdmProfileTitle": "7 Joao Pereira",
"mdmFlaggedFieldIds": [],
"mdmApplicationIdMasterRecord": {},
"mdmCreated": "2017-11-07T19:03:35Z",
"mdmApplicationIdStagingTypeMasterRecordId": {
"bab945f0c3e911e792b20242ac110003_student": [
"5ad5e710c3ee11e792b20242ac110003"
]
},
"mdmCrosswalk": [
{
"mdmApplicationId": "bab945f0c3e911e792b20242ac110003",
"mdmConnectorId": "",
"mdmCrossreference": {
"student": {
"code": "7"
}
}
}
],
"mdmErrors": [],
"mdmEntityTemplateId": "57e61090c3e211e792b20242ac110003",
"mdmPreviousIds": [],
"mdmId": "5ad6d170c3ee11e792b20242ac110003"
}
],
"aggs": {}
}