Raft-suite é um ecossistema criado pela DP6 para garantir a qualidade dos dados (Data Quality) nos projetos de engenharia de dados implementados nos clientes da DP6, através de monitoramento automatizados de dados.
O Hub é a solução responsável por centralizar a consolidação dos dados no BigQuery, ferramenta escolhida para servir de data warehouse do raft-suite.
- Cloud Functions
- BigQuery
- NodeJS >= 14.17.1
- Google Cloud SDK
-
Acesse o Cloud Shell ou um terminal com git e o gcloud sdk
-
Clone o repositório
git clone https://github.com/DP6/raft-suite-hub.git
-
Em seguida, navegue para a pasta e use o comando deploy
cd raft-suite-hub gcloud functions deploy hub-raft-suite-deploy --entry-point=app --trigger-http
Opcionalmente, você pode preencher as variáveis de ambiente
DATASET_ID
,TABLE_ID
eINSERT_TYPE
com a flag --set-env-vars:cd raft-suite-hub gcloud functions deploy hub-raft-suite-deploy --entry-point=app --trigger-http --set-env-vars DATASET_ID=[dataset] TABLE_ID=[table] INSERT_TYPE=[batch ou stream]
Para utilizar, é preciso fazer uma requisição POST para a cloud function com um json no body. Por exemplo, em Node com axios:
const axio = require('axios');
let body = {
module: 'penguin-datalayer-collect',
spec: 'dp6_site',
deploy: '2.0.0',
code: '01-00',
description: 'Saving collect data',
payload: {
status: 'OK',
objectName: 'event',
keyName: 'eventCategory',
message: '',
},
};
axios.post('https://us-central1-dp6-brasil.cloudfunctions.net/hub-raft-suite', body);
Parâmetro | Tipo | Exemplo | Obritatório | Descrição |
---|---|---|---|---|
body | object |
- | Sim | Request body |
body.project | string |
Não | Nome do projeto | |
body.module | string |
penguin-datalayer |
Sim | Nome do módulo que enviou a mensagem |
body.spec | string |
dp6_site |
Sim | Detalhe sobre a execução do módulo |
body.deploy | number |
2.1.0 |
Sim | Versão do módulo ou cloud function |
body.code | string |
01-00 |
Não | Código usado para definir a dimensão e o status |
body.description | string |
Não | Descrição do status | |
body.details | string |
Não | -- | |
body.payload | Object |
{} | Não | Informações específicas dos módulos, que serão escritas como JSON na tabela |
Por padrão, as cloud functions do tipo http só podem ser executadas com autenticação. Por isso, a requisição post precisa ser feita de um local autenticado, ou com o token de autenticação.
Pull requests são bem-vindos! Nós vamos adorar ajuda para evoluir esse modulo. Sinta-se livre para navegar por issues abertas buscando por algo que possa fazer. Caso tenha uma nova feature ou bug, por favor abra uma nova issue para ser acompanhada pelo nosso time.
Só serão aceitas contribuições que estiverem seguindo os seguintes requisitos:
e-mail: [email protected]