Alura > Cursos de Data Science > Cursos de Business Intelligence > Conteúdos de Business Intelligence > Primeiras aulas do curso Data Warehouse e Integration Services: carregando fatos e dimensão tempo

Data Warehouse e Integration Services: carregando fatos e dimensão tempo

Planejamento do processo de carga - Apresentação

Olá! Meu nome é Victorino Vila e vamos iniciar mais um curso da formação, em que acompanhamos Paula na implementação de um projeto de Business Intelligence corporativo na empresa AtacaDez.

Audiodescrição: Victorino é um homem branco de cabelo curso branco e liso, sobrancelhas e barba grisalhos, e olhos castanhos. Ele veste uma camisa preta e está sentado em frente a uma parede lisa iluminada em gradiente azul-claro.

O que vamos aprender?

Já acompanhamos, em outros cursos, as aventuras de Paula no levantamento do modelo de negócio, na construção do Data Warehouse, na criação e carga do Data Lake, e na carga do Data Warehouse. Contudo, analisamos apenas a carga das dimensões principais.

Agora chegou a hora de finalizar o projeto de carga completa do Data Warehouse, implementando a carga das dimensões tempo e das tabelas de fato. No que se refere à dimensão tempo, precisamos utilizar um critério de busca na lista dos dias contidos no Data Lake e, a partir desses dias, calcular os atributos e os níveis de saída da dimensão.

Quanto à tabela de fato, precisamos considerar a carga dessas mesmas datas que utilizamos para carregar a dimensão tempo e combinar os dados do cabeçalho da nota fiscal, item de nota e também da compra de produtos em um único destino, e calcular os indicadores de valor de venda e custo de venda.

Depois vamos aprimorar o processo de carga adicionando variáveis como parâmetros. Faremos tudo isso neste curso e, no final, teremos o processo de carga do Data Warehouse completo.

Vamos iniciar este curso? Esperamos que você goste bastante.

Até o próximo vídeo!

Planejamento do processo de carga - Carga dos dados no Data Lake

Vamos iniciar nosso curso focado na implementação de um processo de carga, especificamente na dimensão tempo e na tabela de fato.

A ideia é ter, no Data Lake, uma quantidade maior de dados. Por isso, neste vídeo, abordaremos a carga de dados do Data Lake para o período de 2021.

Carga dos dados no Data Lake

Antes de iniciarmos a construção do fluxo de carga do Data Warehouse para o Data Lake, precisamos garantir que teremos um período substancial de dados no Data Lake. Então, faremos uma carga completa do ano de 2021.

Com o projeto aberto no Visual Studio, temos a tarefa de fluxo "Carga do Data Lake" e depois "Carga do Data Warehouse", que implementamos no curso anterior.

Vamos ao diretório fonte, no subdiretório "ETL > mov". Nele, encontramos os movimentos dos cabeçalhos de notas fiscais e os movimentos dos itens de notas fiscais referentes a um longo período.

Vamos realizar a cópia dos dados referentes ao cabeçalho de notas e de itens do ano de 2021. Começaremos pelos itens, selecionando do arquivo Movimento_Itens_2021_01.csv (janeiro de 2021) até Movimento_Itens_2021_12.csv (dezembro de 2021). Após copiar, vamos colar os arquivos no diretório "DATA > FATOS > NOTAS > IN".

Faremos o mesmo processo para os arquivos de cabeçalho de notas fiscais, selecionando do arquivo Movimento_Notas_2021_01.csv até Movimento_Notas_2021_12.csv e colando em "DATA > FATOS > NOTAS > IN".

Além disso, precisamos transportar os dados referentes às compras dos produtos realizadas por fornecedores para a AtacaDez. Então, retornando ao subdiretório "ETL > compra", selecionaremos as compras de janeiro de 2021 (Compras_202101.csv) a dezembro de 2021 (Compras_202112.csv). No diretório "DATA > FATOS > COMPRAS > IN", colaremos esses arquivos.

De volta ao projeto, escolheremos o pacote CargaPrincipal.dtsx na aba à direita, clicando com o botão direito do mouse sobre ele e selecionando a opção "Definir como Objeto de Inicialização". Em seguida, clicamos no botão "Iniciar".

Será iniciada a carga das dimensões do Data Lake, das tabelas de fato do Data Lake e, por fim, das dimensões do Data Warehouse. Esse processo levará apenas alguns minutos.

Verificação dos dados carregados

Após a finalização da carga, verificamos no pacote principal (CargaPrincipal.dtsx) que as cargas do Data Lake e do Data Warehouse foram executadas com sucesso.

Vamos verificar agora o conteúdo das tabelas de cabeçalho de notas fiscais e de compras no Data Lake, especificamente no SQL Server, para ter certeza que os dados de 2021 foram corretamente carregados.

No SQL Server, criaremos uma nova consulta. No pesquisador de objetos à esquerda, temos a tabela de notas fiscais (dbo.tbl_nota). Sendo assim, vamos inserir a consulta SELECT MIN(DATA), MAX(DATA) FROM [dbo].[tbl_nota].

SELECT MIN(DATA), MAX(DATA) FROM [dbo].[tbl_nota]

Como resultado, temos dados no Data Lake de janeiro de 2021 até o final de dezembro de 2021.

#(Nenhum nome de coluna)(Nenhum nome de coluna)
12021-01-012021-12-31

No caso de dados referentes a compras, selecionamos os campos MIN(MES_ANO) e MAX(MES_ANO) na tabela de compra (dbo.tbl_compra). Como resultado, verificamos compras de janeiro de 2021 a dezembro de 2021.

SELECT MIN(MES_ANO), MAX(MES_ANO) FROM [dbo].[tbl_compra]
#(Nenhum nome de coluna)(Nenhum nome de coluna)
12021-012021-12

Conclusão

Com isso, nosso Data Lake está carregado com os dados pretendidos. Agora temos tudo pronto para fazer os scripts de carga da dimensão tempo e da tabela de fato do Data Warehouse.

Um abraço e até o próximo vídeo!

Planejamento do processo de carga - Planejando o processo de carga

Agora que os dados do Data Lake estão carregados, vamos planejar os passos que teremos que seguir para a construção do processo de carga da dimensão tempo e da tabela de fato do Data Warehouse.

Neste vídeo, vamos planejar o processo de carga.

Planejando o processo de carga

Antes de começar a programar efetivamente o fluxo de carga da dimensão tempo e da tabela de fato, vamos anotar os passos que precisamos percorrer.

Primeiro, vamos analisar a tabela de listas de datas que temos no Data Lake, chamada dbo.tbl_tempo. Vamos selecionar as mil primeiras linhas dessa tabela.

Podemos verificar que existe uma lista de datas com uma coluna chamada "controle". Este campo funciona da seguinte maneira: quando o número 1 estiver presente, significa que a carga para essa data está pendente.

Com base no campo "controle", vamos criar a dimensão tempo para esses dias cujo controle é igual a 1, e realizar a carga das tabelas de fato do Data Warehouse utilizando o campo de controle. Após essa carga, as datas utilizadas como controle terão seu valor alterado de 1 para 0, o que justifica a criação do campo "controle".

Vamos precisar selecionar os dias com "controle" igual a 1 e, baseado nesses dias, calcular agregadores dos níveis output da dimensão tempo: mês, trimestre, semestre, ano, se é dia da semana, fim de semana, e assim por diante. Também precisaremos efetuar o LOOKUP para criar o identificador primário da dimensão tempo.

Vamos anotar os passos para a dimensão tempo:

  1. Ler a lista de datas cujo controle = 1;
  2. Criar novas colunas referentes aos agregadores de tempo;
  3. Aplicar o processo de LOOKUP sobre os identificadores naturais do tempo.

Para a tabela de fato, teremos mais etapas, já que no Data Lake, os dados referentes à tabela de fato estão distribuídos em três tabelas: dbo.tbl_compra, dbo.tbl_nota e dbo.tbl_item.

Porém, no Data Warehouse, a tabela de fato (dbo.fact_venda) é uma só e contém os seguintes campos: os identificadores primários de cada dimensão (id_loja, id_cliente, id_produto e id_dia), quantidade_vendida, valor_venda e custo_venda.

Portanto, temos que seguir os seguintes passos:

  1. Extrair dados das tabelas tbl_nota, tbl_item, tbl_compra;
  2. Juntar a tabela tbl_nota com tbl_item, usando como critério de junção o número da nota, que é a coluna em comum nas duas tabelas;
  3. Precisaremos agrupar as linhas dessa tabela por data, produto, cliente e loja. Esse agrupamento é necessário porque um mesmo cliente pode comprar o mesmo produto no mesmo dia em notas diferentes;
  4. Faremos a junção da tabela resultante da junção entre tbl_nota e tbl_item, que chamaremos de tbl_venda, com tbl_compra, usando a data (MES_ANO) como critério de junção;
  5. Fazer os cálculos, principalmente de valor_venda, que será o preço de venda e a quantidade, ambas vindas da tabela de itens de notas fiscais; e custo_venda, que será a quantidade que está na tabela de itens com o preço do produto;
  6. Por fim, precisaremos aplicar o processo de LOOKUP para a tabela de fato, transformando os identificadores naturais que estão na tabela de fato em identificadores primários.

Conclusão

Esses são os passos que precisaremos percorrer para implementar tanto a carga da dimensão tempo quanto da tabela de fato. Para simplificar o trabalho, vamos fixar uma data de leitura, e após terminar o processo de carga, generalizaremos essa data para automatizar a carga no final.

Um abraço e até o próximo vídeo!

Sobre o curso Data Warehouse e Integration Services: carregando fatos e dimensão tempo

O curso Data Warehouse e Integration Services: carregando fatos e dimensão tempo possui 204 minutos de vídeos, em um total de 71 atividades. Gostou? Conheça nossos outros cursos de Business Intelligence em Data Science, ou leia nossos artigos de Data Science.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Business Intelligence acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas