Vamos criar a estrutura de diretórios para armazenar os arquivos de notas fiscais e de compras provenientes de fornecedores. Dentro do diretório ETL, que criamos ao baixar o arquivo ETL.zip no curso anterior e fornecemos um link para baixar o arquivo compactado no início deste curso.
Dentro do diretório ETL da nossa máquina, encontramos dois subdiretórios importantes neste momento: o subdiretório compra e o subdiretório mov.
No subdiretório compra, há uma série de arquivos com extensão .csv, onde o prefixo é compras e o sufixo é o ano e mês de referência do arquivo. Cada um desses arquivos consolida todas as compras realizadas pelos fornecedores em um mês específico.
Dentro do subdiretório mov, temos dois grupos de arquivos. O primeiro grupo tem como prefixo movimento_itens e também o ano e mês de referência. O segundo grupo apresenta movimento_notas, seguido do ano e mês.
O Movimento_notas representa o cabeçalho da nota fiscal, enquanto movimento_itens representa os itens da nota fiscal.
Uma nota fiscal é composta por informações que são aplicáveis à nota como um todo, tais como o nome do cliente, a data e o número da nota, bem como várias linhas, uma linha para cada item. Observe em uma nota de supermercado, ela possui uma estrutura única que vale para a nota toda diversos subitens.
No arquivo movimento_notas, encontramos as informações que são relevantes para a nota como um todo. No movimento_itens, estão registradas as informações relativas a cada item da nota. Estes são os arquivos que a equipe de TI irá nos enviar, permitindo-nos realizar a leitura dos dados primeiro para o Data Lake.
Dessa forma, é necessário organizar a estrutura para receber esses arquivos.
Organizando a estrutura de recebimento de arquivos
No subdiretório DATA, onde os arquivos serão recebidos, dentro do subdiretório FATOS, vamos criar dois outro subdiretório FATOSs subdiretórios, NOTAS e COMPRAS. Para isso, selecionamos o subdiretório FATOS e escolhemos a opção "Novo > Pasta".
Dentro desses subdiretórios, começando pelo COMPRAS, criamos dois subdiretórios mais, IN e OUT. Estamos criando o subdiretório OUT, diferente do que fizemos no subdiretório das dimensões. No subdiretório das dimensões, apenas o diretório IN foi criado. Mas neste caso, também temos um diretório OUT.
Depois de copiar estes subdiretórios, IN e OUT, para dentro do subdiretório NOTAS.
No diretório mov, onde temos as notas fiscais, vamos pegar o Movimento_Itens_2021_01.csv, que é o primeiro arquivo em ordem cronológica que estamos recebendo, e buscamos o equivalente ao cabeçalho da nota fiscal: Movimento_Notas 2021_01.csv.
Ao selecionarmos esses dois diretórios, iremos copiá-los e colá-los no diretório NOTAS, dentro do diretório IN.
- NOTAS
- IN
- Movimento_Itens_2021_01.csv
- Movimento_Notas_2021_01.csv
Vamos realizar o mesmo procedimento para as compras. No entanto, no diretório ETL, dentro do diretório compra, selecionaremos o arquivo Compras_202101.csv. Posteriormente, copiaremos e colaremos este arquivo dentro do diretório COMPRAS, no diretório IN.
Agora, entenderemos por que temos um diretório IN e um diretório OUT neste cenário.
Diretório IN e Diretório OUT
Diferentemente das dimensões, os nomes dos arquivos que irão carregar os movimentos sofrem alterações, pois todos os arquivos possuem um sufixo com a data de referência, correspondendo ao mês de referência daquele arquivo.
No caso das dimensões, o nome dos arquivos sempre será o mesmo: no diretório cliente, a planilha sempre terá o nome CADASTRO DE CLIENTES.xlsx e o .csv sempre será REGIOES DOS ESTADOS.csv. Esse padrão foi acordado com a área de TI da AtacaDez, que enviará os arquivos com esses nomes específicos.
Nossa relação com a equipe de TI, que nos fornece as fontes de dados, é muito importante. Na área de Business Intelligence, precisamos interagir com a equipe de TI e combinar as regras.
Por exemplo, se o departamento de TI enviar um arquivo com um nome diferente, o processo de carregamento pode ser interrompido. Já os arquivos de movimento, como o de compras, devem ter nomes distintos para que possamos identificar a data referida no título do arquivo. Lembrem-se, esse diretório IN de COMPRAS será o diretório de chegada.
Então, o que nosso processo de carga terá que fazer de diferente do que fizemos com a dimensão? Toda vez que um arquivo de movimento chegar, seja no diretório de compras, seja no de notas, nós o leremos e depois moveremos o arquivo do diretório IN para o diretório OUT.
Portanto, no final do processo, o diretório IN estará vazio, pronto para receber novos arquivos. Já no diretório OUT teremos a lista dos arquivos que o processo de extração de dados para o Data Lake já leu. Essa é uma forma de saber o que já foi lido e o que deve ser lido novamente.
É claro que, se movermos os arquivos Movimento_Itens_2021_01.csv e Movimento_Notas 2021_01.csv que estão em OUT dentro de NOTAS para o diretório IN e processá-los, leremos novamente o mês de janeiro de 2021. No entanto, nosso processo não trará problemas.
Lembre-se, quando implementamos as dimensões, gerenciamos a gravação dos dados no Data Lake de tal maneira que, quando encontramos um registro, o substituímos; quando não encontramos, incluímos. Portanto, ler o mesmo mês várias vezes, da maneira como projetaremos o processo no Integration Service, não será um problema.
No entanto, quando temos nomes de arquivos diferentes, a boa prática indica que devemos criar um diretório IN e um diretório OUT. Quando o processo ETL lê os dados do diretório in, ele deve mover esses arquivos para o diretório OUT.
Então a origem das informações, tanto para as notas fiscais, quanto para compras, serão os diretórios "FATOS > NOTAS > IN" e "FATOS > COMPRAS > IN".
Posteriormente, o processo precisará copiar os arquivos do diretório IN para o diretório OUT.
Conclusão
Portanto, mantenha os arquivos compras_202101 no diretório "DATA > FATOS > COMPRAS > IN" e os arquivos Movimento_Itens_2021_01 e Movimento_Notas_202101 no diretório "DATA > FATOS > NOTAS > IN". Combinado?
Vamos encerrar este vídeo por aqui. Até breve!