Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

 

Limpeza

de

dos dados

dinâmica

inseridos no

ETL do

TOTVS 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.prwCriaçã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.prwCriaçã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.prwCriaçã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.prwCriação

Classe responsável por avaliar o intervalo de extração de acordo com o tipo de período configurado para a entidade.

BIXRunner.prwCriaçãoClasse 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
      languagevb
      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
      languagevb
      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
      languagevb
      oKey 	:= BIXKey():Build( Self )
    • GetKey - Gera a surrogate key para um registro da dimensão:

      Bloco de código
      languagevb
      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
      languagevb
      oRecord := BIXRecord ():Build( Self )
    • Init - Inicializa um registro definindo o valor padrão para cada campo. 

      Bloco de código
      languagevb
      oRecord:Init()
    • SetValue - Define o valor para cada campo do registro:

      Bloco de código
      languagevb
      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
      languagevb
      oSeeker := BIXSeeker ():Build( Self )
    • Seek - Pesquisa uma business key em um lookup e retorna a surrogate key do registro.  

      Bloco de código
      languagevb
      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
    languagevb
    oOutput:Send:= BIXOutput ():Build( Self )
  • Send - Envia os dados para a Fluig Smart Data. 

    Bloco de código
    languagevb
    oOutput:Send( oRecord )
  • Release - Libera o pool de gravação. 

    Bloco de código
    languagevb
    oOutput:Release() 

...

SetFromDate - Define o período inicial de extração.

Bloco de código
languagevb
oRunner:SetFromDate( aParameter[1] )

...

SetToDate - Define o período final de extração. 

Bloco de código
languagevb
oRunner:SetToDate( "20170207" )

...

SetProfile - Define o perfil de extração a ser utilizado. 

Bloco de código
languagevb
oRunner:SetProfile( "20170207" )

...

Init - Prepara a Fluig Smart Data para receber os dados. 

Bloco de código
languagevb
oRunner:Init(  )

Go - Executa a extração de uma lista de fato. 

...

languagevb

...

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.grfCriaçãoLimpeza 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óricosEfetua 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.