Para a automatização do algorítmo Golden Batch utilizamos as bases de dados salvos em parquet no Amazon S3 Storage. As bases utilizadas foram as tabelas de produção e de laboratório.
Dados de Produção:
Dados mensurados nas linhas de produção sobre os parametros utilizados em diferentes etapas, maquinas e processos para a produção de MDF.
Path: 'dbfs:/mnt/dexco-dev-da-databricks-storage-in-pae/Golden Batch Produção - Agudos FA2/'
Dados de Laboratório:
Medição feita em laboratório sobre características que descrevem a qualidade do MDF como densidade, tração média e tração perpendicular média.
Path: 'dbfs:/mnt/dexco-dev-da-databricks-storage-in-pae/Golden Batch Laboratório - Agudos FA2/'
Camadas de Carregamento
O carregamento e tratamento dos dados é feito em camadas estruturadas, onde as tabelas são registradas em cada camada e o código de tratamento acessa apenas as tabelas desta mesma camada, criando blocos fechados de forma que os códigos podem ser desenvolvidos de forma indepedente.
Camada Bronze:
Onde ocorre o carregamento de dados de outras origens e salvo dentro do hive_metastorage sem a realização de tratamentos mais complexos.
Camada Silver:
Ocorre o tratamento das bases, ajustando os nomes de colunas e verificando a presença de nulos, os tipos registrados nas tabelas (string, inteiro, decimal e etc) e os valores presentes em cada uma das variáveis, além das mudanças de formato e junção de tabelas entre outros possiveis tratamentos.
Camada Gold:
O Algoritimo processa os dados da Camada Silver como Input e os resultados são registrado nesta camada. Essa camada é onde está o Output final gerado pelo modelo, sendo a camada de maior valor.
Camada Bronze
Para ambos os dados de produção e laboratório utilizamos funções padrões que dependem do pacote unidecode
path_exists(path):
Verifica se o caminho que foi passado existe
executa(path_origin, path_destination):
Importa dados do S3 Storage, corrrige nome das colunas removendo caracteres especiais e salva a tabela na camada bronze.
O Processo ocorre em cargas incrementais, são analisados os parquets mais recentes publicados em S3 comparando com a data do ultimo parquet processado ns camada bronze, além disso ocorre a exclusão de registros salvos na camada bronze posteriores a data minima da carga incremental.
Dados de Produção
O notebook utilizado para este processamento se encontra no seguinte caminho dentro do repositório:
Path: jobs/dev/03__layers/01__bronze/processo/2023-02-03__bronze__variaveis_de_producao
Após a execução os dados são enviados para a Camada Bronze no hive_metastorage dentro do DataBricks. A tabela é salva no banco de dados golden_batch__bronze com o nome golden_batch__bronze.database__production_line.
Dados de Laboratório
O notebook utilizado para este processamento se encontra no seguinte caminho dentro do repositório:
Path: jobs/dev/03__layers/01__bronze/laboratorio/2023-03-20__bronze__variaveis_de_laboratorio
Após a execução os dados são enviados para a Camada Bronze no hive_metastorage dentro do DataBricks. A tabela é salva no banco de dados golden_batch__bronze com o nome golden_batch__bronze.database__laboratory_variables.
Camada Silver
Dados de Produção
O notebook utilizado para este processamento se encontra no seguinte caminho dentro do repositório:
Path: jobs/dev/03__layers/02__silver/processo/2023_03_09__silver__production_line
É necessário a instalação do pacote slugify para a padronização dos caracteres em letras minúsculas para os nomes das colunas e utilização de underline como separador.
Foram importadas as bibliotecas necessárias
Para facilitar a carga de dados são gerados intervalos de tempo para que os dados sejam processados em lotes, salvando na base de dados e posteriormente descartados para a consulta para o próximo intervalo.
A função gera_timestamps cria a partir de uma data maxima e minima uma lista de timestamps dado uma janela de tempo de um dia.
As consultas são feitas a partir do SQL na tabela golden_batch__bronze.databse__production_line com as datas coletadas pela lista de timestamp
Outras funções tambem são utilizadas para a carga dos dados, bem como a função de mudar nome das colunas
É necessário excluir as colunas que não representam parametros de produção mensuráveis
Mudamos a tabela do formato wide para o formato long afim de facilitar a carga de novas variáveis, tambem excluimos os valores nulos
Criamos uma função que faz todos os processamentos para um mesmo lote
Salvamos o processamento em lote no modo append para acrescentar esses novos dados a carga histórica
Rodamos todo o processo e salvamos o lote por meio das funções que foram criadas, usando datas máximas e mínimas da tabela golden_batch__bronze.database__production_line.
E os dados foram transformado no objeto Spark Dataframe e registrados na Camada Silver . A tabela é salva no banco de dados golden_batch__silver com o nome golden_batch__silver.database__production_line.
Dados de Laboratóro
O notebook utilizado para este processamento se encontra no seguinte caminho dentro do repositório:
Path: jobs/dev/03__layers/02__silver/laboratorio/2023_03_21__silver__laboratory_variables
É necessário a instalação do pacote slugify para a padronização dos caracteres em letras minúsculas para os nomes das colunas e utilização de underline como separador.
Foram importadas as bibliotecas necessárias
A tabela foi salva como Pandas Dataframe e os nomes das colunas foram selecionadas e padronizadas
O formato da tabela foi transformado do formato wide para o formato long e foram excluidos os valores nulos
E os dados foram transformado no objeto Spark Dataframe e registrados na Camada Silver . A tabela é salva no banco de dados golden_batch__silver com o nome golden_batch__silver.database__laboratory_variables.