Histórico da Página
Limpeza
dedos dados
dinâmicainseridos no
ETL doTOTVS Smart Analytics de forma dinâmica.
Informações Gerais
Linha de Produto: | Microsiga Protheus® | ||
Segmento Executor: | Serviços | ||
Módulo: | TOTVS Smart Analytics | ||
Requisito (ISSUE): | SERBA003-2734 |
Objetivo
O Objetivo deste documento, é apresentar uma solução para que a limpeza de dados do TOTVS Smart Analytics, seja dinâmica, este . Este mecanismo deverá verificar quais apps estão instalados no projeto e efetuar a limpeza dos dados com base neles. Também deverá ser possível limpeza (limpeza total ou limpeza de histórico). Outro recurso que deve ser inserido, é a possibilidade de efetuar a limpeza de fatos e dimensões de forma individual, sendo parametrizado através da interface do Gooddataentidades específicas, elas devem ser informadas através do console de integração de dados.
Definição da Regra de Negócio
Rotina | Tipo de Operação | Regras de Negócio |
BIXEntityAPP_PARAMETERS.prwtxt | Criação | Interface de uma entidade que contém todos os métodos que devem ser implementados por uma fato ou dimensão. |
BIXKey.prw | Criação | Classe responsável por representar a surrogate key de uma entidade. |
BIXModel.prw | Criação | Classe reponsável por representar o modelo de uma entidade. O modelo contém a representaçãode todas as características fixas de uma entidade. |
BIXRecord.prw | Criação | Classe responsável por representar um registro. Um registro contém os campos fixos e os que são inseridos de forma dinâmica em um entidade. |
BIXSeeker.prw | Criação | Classe responsável por representar os lookups de uma entidade. Realiza a validação de integridade por meio da pesquisa em uma entidade da Fluig Smart Data. Todas as pesquisas são mantidas em memória, minimizando a necessidade de acesso constante ao banco de dados. |
BIXOutput.prw | Criação | Classe responsável por representar a saída de dados de um processo de extração. Os registros enviados para o output do extrator são armazenados em um pool e posteriomente inseridos na Fluig Smart Data. |
BIXDate.prw | Criação | Classe responsável por avaliar o intervalo de extração de acordo com o tipo de período configurado para a entidade. |
BIXRunner.prw | Criação | Classe responsável por executar a extração dos dados das entidades. |
Procedimento para Utilização
- BIXEntity - A classe BIXEntity deve ser extendida por todas as fatos e dimensões gerenciadas pelo extrator de dados e os seguintes métodos devem ser implementados:
New - Construtor da classe:
Bloco de código language vb Method New() Class BIXCliente _Super:New( "D", "HJ7", "Cliente", "SA1" ) Return Self
Model - Instância da classe BIXModel com a definição do modelo de dados da entidade:
Bloco de código language vb Method Model() Class BIXCliente Local oModel := BIXModel():Build( Self ) oModel:SetSK( "HJ7_CLIENT" ) oModel:SetBK( { "HJ7_CODIGO", "HJ7_LOJA" } ) oModel:AddField( "HJ7_CLIENT" , "C", 32, 0 ) oModel:AddField( "HJ7_CODIGO" , "C", 25, 0 ) oModel:AddField( "HJ7_LOJA" , "C", 02, 0 ) oModel:AddField( "HJ7_CLIEMT" , "C", 25, 0 ) oModel:AddField( "HJ7_NOME" , "C", 60, 0 ) oModel:AddField( "HJ7_MATRIZ" , "C", 60, 0 ) oModel:AddField( "HJ7_RAMO" , "C", 30, 0 ) oModel:AddField( "HJ7_MATCLI" , "C", 32, 0 ) oModel:FreeField() Return oModel
- Run - Definição da regra de extração de dados para a entidade.
- Flow - Fluxo de dados da entidade.
- BIXKey - A classe BIXKey deve ser usada para geração da surrogate key das dimensões. Os seguintes métodos devem ser implementados:
Build - Construtor da classe. Instancia a classe BIXKey com base nas informações definida no classe da fato ou dimensão:
Bloco de código language vb oKey := BIXKey():Build( Self )
GetKey - Gera a surrogate key para um registro da dimensão:
Bloco de código language vb oRecord:SetValue( "HJ7_CLIENT", oKey:GetKey( { SA1->A1_COD, SA1->A1_LOJA } ) )
- BIXRecord - A classe BIXRecord deve ser usada para armazenar os dados que serão enviados posteriormente para a classe BIXOutput, responsável pela gravação dos dados na Fluig Smart Data. Os seguintes métodos devem ser implementados:
Build - Construtor da classe. Instancia a classe BIXRecord com base nas informações definidas no classe da fato ou dimensão:
Bloco de código language vb oRecord := BIXRecord ():Build( Self )
Init - Inicializa um registro definindo o valor padrão para cada campo.
Bloco de código language vb oRecord:Init()
SetValue - Define o valor para cada campo do registro:
Bloco de código language vb oRecord:SetValue( "HJ7_CLIENT", oKey:GetKey( { SA1->A1_COD, SA1->A1_LOJA } ) )
- BIXSeeker - A classe BIXSeeker é responsável por pesquisar um registro, por meio da business key definida no modelo de um lookup, e retornar a surrogate key do registro.
Build - Construtor da classe. Instancia a classe BIXOutput com base nas informações definidas na classe da fato ou dimensão:
Bloco de código language vb oSeeker := BIXSeeker ():Build( Self )
Seek - Pesquisa uma business key em um lookup e retorna a surrogate key do registro.
Bloco de código language vb oSeeker:Seek( "HJ7", { SA1->A1_COD, SA1->A1_LOJA } )
...
Build - Construtor da classe. Instancia a classe BIXOutput com base nas informações definidas na classe da fato ou dimensão:
Bloco de código language vb oOutput:Send:= BIXOutput ():Build( Self )
Send - Envia os dados para a Fluig Smart Data.
Bloco de código language vb oOutput:Send( oRecord )
Release - Libera o pool de gravação.
Bloco de código language vb oOutput:Release()
...
SetFromDate - Define o período inicial de extração.
Bloco de código | ||
---|---|---|
| ||
oRunner:SetFromDate( aParameter[1] ) |
...
SetToDate - Define o período final de extração.
Bloco de código | ||
---|---|---|
| ||
oRunner:SetToDate( "20170207" ) |
...
SetProfile - Define o perfil de extração a ser utilizado.
Bloco de código | ||
---|---|---|
| ||
oRunner:SetProfile( "20170207" ) |
...
Init - Prepara a Fluig Smart Data para receber os dados.
Bloco de código | ||
---|---|---|
| ||
oRunner:Init( ) |
Go - Executa a extração de uma lista de fato.
...
language | vb |
---|
...
Arquivo contendo a relação de apps por projeto. Deve ser colocado no mesmo diretório /data/transform/. | ||
APP_SCANNER.grf | Criação | Analisa um projeto e gera no diretório /data/tmp/ um arquivo CSV denominado PROJECT_APP.csv, contendo os apps instalados. |
DELETE_ALL_PROJECT.grf | Criação | Limpeza total dos dados no Gooddata. |
PURGE_HISTORY.grf | Criação | Limpeza de dados históricos no Gooddata. |
Procedimento para Utilização
- Limpeza total do projeto: Efetua a limpeza de todos os datasets do projeto.
- Acessar o console de integração de dados
- Criar um agendamento para o graph DELETE_ALL_PROJECT.grf
- Executar o agendamento criado.
- Limpeza parametrizada dos dados: Efetua a limpeza apenas das entidades parametrizadas.
- Acessar o console de integração de dados
- Criar um agendamento para o graph DELETE_ALL_PROJECT.grf
- Adicionar um parâmetro para este agendamento:
- Parameter name: ENTITIES
- Parameter value: Entidades que deseja efetuar a limpeza. Devem ser informadas dividindo-as por ',':
- Exemplo: HL2,HL9,HJ4,HJ6
- Executar o agendamento criado.
- Limpeza de dados históricos: Utiliza o arquivo fact_parameters.txt como base e tem como objetivo deletar um histórico de dados mais antigo.
- Acessar o console de integração de dados
- Criar um agendamento para o graph PURGE_HISTORY.grf
- Executar o agendamento criado.
- Limpeza parametrizada dos dados históricos: Efetua a limpeza histórica apenas das entidades parametrizadas.
- Acessar o console de integração de dados
- Criar um agendamento para o graph PURGE_HISTORY.grf
- Adicionar um parâmetro para este agendamento:
- Parameter name: ENTITIES
- Parameter value: Entidades que deseja efetuar a limpeza. Devem ser informadas dividindo-as por ',':
- Exemplo: HL2,HL9,HJ4,HJ6
- Executar o agendamento criado.