Modelador de Dados
8. Tabela de Upload
8.1. Change Data Capture (CDC)
Quando utilizamos o tipo de entrada "Staging Area" com query, consideramos que existe uma fonte externas de informações, normalmente um Data Lake, mas nem sempre podemos carregar todos os dados, em ambientes produtivos a carga de tabelas com grandes volumes, como fatos por exemplo, devemos fazer um carregamento incremental e para isso o 4insights conta com uma funcionalidade que auxilia nesse processo, disponibilizando duas formas de controlar as alterações, ambas as formas necessita de uma interação com uma ferramenta externa, pois para incluir as informações de controle é necessário a chamada de API's REST, esses dois caminhos são:
CDC usando JSON:
Os dados de referência são incluidos via REST sendo passados em formato JSON, nesse formato o 4insights irá se encarregar de montar o cláusula Where de forma automática.
São necessários duas requisições para realizar a inclusão dos dados de controle. sendo eles a requisição de autenticação para obter o token de acesso e a requisição de inclusão do controle na API.
Requisição de Autenticação: Deve ser realizada uma requisição usando o método POST para a URL do exemplo abaixo (considerando o endereço do servidor) e informar no corpo da requisição o CLIENT_ID e CLIENT_SECRET que podem ser obtidos na criação de uma nova credencial.
POST /4insights-authentication/oauth/token HTTP/1.1
Host: (ENDEREÇO DO SERVIDOR)
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials&client_id=<CLIENT_ID>&client_secret=<CLIENT_SECRET>
O resultado desta requisição é o Token de acesso que deve ser informado no cabeçalho Authorization da próxima requisição.
Requisição de inclusão dos dados de controle: Após obter o token de acesso, deve ser realizada uma requisição usando o método POST para a URL do exemplo abaixo (considerando o endereço so servidor) e informar no corpo da requisição o JSON informando as propriedades:
- customerName: Deve conter o nome do cliente cadastrado no 4insights.
- environmentName: Deve conter o nome do ambiente cadastrado no 4insights.
- moduleName: Deve conter o nome interno do módulo onde deve ser realizado o controle.
- type: Deve conter (APPEND ou OVERRIDE), esse valor se trata do tipo de alteração que está sendo inserida, APPEND para incluir o novo controle e OVERRIDE para substituir algum controle que já estiver cadastrado anteriormente.
- data: Deve conter o conteúdo em formato JSON do controle e considerar a seguinte regra: a propriedade deve conter o nome da coluna (e alias da tabela se existir) e o valor deve ser uma lista de texto ou um valor texto diretamente.
Exemplo da requisição:
POST /4insights/api/datamodeler/cdc/json HTTP/1.1
Host: (ENDEREÇO DO SERVIDOR)
Authorization: Bearer (TOKEN DE ACESSO)
Content-Type: application/json
{
"customerName": "NOME DO CLIENTE",
"environmentName": "NOME DO AMBIENTE",
"moduleName": "NOME DO MODULO",
"type": "APPEND",
"data": {
"<alias>.<column>": "<value>",
"<column>": ["<value1>", "<value2>"]
}
}
Para utilizar os dados de controle que foram adicionados podem ser utilizados nas áreas que podem receber SQL livre dentro do modelo de dados, tais como (SQL de Pré-Execução, SQL de Pós-Execução e Staging Area Query)
Para o 4insights considerar a utilização do controle deve ser adicionado o parâmetro ${cdc_sql}
e no momento da execução da carga será substituído pelas informações adicionadas via API.
Você também pode incluir um valor padrão para caso o 4insights não consiga recuperar os dados de controle ou caso ele não os encontre.
Com esse exemplo caso não exista nenhum controle adicionado o valor da variavel será substituido por 1=1
.
CDC usando texto livre:
Os dados de referência são incluidos via REST sendo passados em formato texto livre, nesse formato o 4insights irá se encarregar de substituir o parâmetro cdc_raw
pelo valor no controle.
São necessários duas requisições para realizar a inclusão dos dados de controle. sendo eles a requisição de autenticação para obter o token de acesso e a requisição de inclusão do controle na API.
Requisição de Autenticação: Deve ser realizada uma requisição usando o método POST para a URL do exemplo abaixo (considerando o endereço do servidor) e informar no corpo da requisição o CLIENT_ID e CLIENT_SECRET que podem ser obtidos na criação de uma nova credencial.
POST /4insights-authentication/oauth/token HTTP/1.1
Host: (ENDEREÇO DO SERVIDOR)
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials&client_id=<CLIENT_ID>&client_secret=<CLIENT_SECRET>
O resultado desta requisição é o Token de acesso que deve ser informado no cabeçalho Authorization da próxima requisição.
Requisição de inclusão dos dados de controle: Após obter o token de acesso, deve ser realizada uma requisição usando o método POST para a URL do exemplo abaixo (considerando o endereço so servidor) e informar no corpo da requisição o JSON informando as propriedades:
- customerName: Deve conter o nome do cliente cadastrado no 4insights.
- environmentName: Deve conter o nome do ambiente cadastrado no 4insights.
- moduleName: Deve conter o nome interno do módulo onde deve ser realizado o controle.
- type: Deve conter (APPEND ou OVERRIDE), esse valor se trata do tipo de alteração que está sendo inserida, APPEND para incluir o novo controle e OVERRIDE para substituir algum controle que já estiver cadastrado anteriormente.
- data: Deve conter o conteúdo em formato texto do controle.
Exemplo da requisição:
POST /4insights/api/datamodeler/cdc/raw HTTP/1.1
Host: (ENDEREÇO DO SERVIDOR)
Authorization: Bearer (TOKEN DE ACESSO)
Content-Type: application/json
{
"customerName": "NOME DO CLIENTE",
"environmentName": "NOME DO AMBIENTE",
"moduleName": "NOME DO MODULO",
"type": "APPEND",
"data": "<value>"
}
Para utilizar os dados de controle que foram adicionados podem ser utilizados nas áreas que podem receber SQL livre dentro do modelo de dados, tais como (SQL de Pré-Execução, SQL de Pós-Execução e Staging Area Query)
Para o 4insights considerar a utilização do controle deve ser adicionado o parâmetro ${cdc_raw}
e no momento da execução da carga será substituído pelas informações adicionadas via API.
Para mais detalhes sobre as API's do 4insights acesse o endereço http://(servidor)/4insights/swagger-ui.html ou https://4insights.net/4insights/swagger-ui.html