Olá galera o/

Vamos a mais uma postagem sobre o Azure Data Factory, se você não conhece o Azure Data Factory (ADF) abaixo segue os dois posts que fiz sobre o mesmo, os posts estão bem legais e detalhados.

  • Conhecendo o Azure Data Factory >> LINK <<
  • Azure Data Factory: Criando seu primeiro pipeline de dados >> LINK <<

Hoje vamos criar um dataset genérico utilizando parâmetros. Mas porque criar um dataset genérico Luiz? Se você leu o post Criando seu primeiro pipeline de dados, percebeu que eu criei os datasets apontando diretamente tanto para o arquivo em questão, quanto para a tabela de destino. Agora imaginem a seguinte situação, vocês tem que armazenar em 20 tabelas dados que vem de 20 arquivos diferentes, na teoria seriam 20 datasets para o banco (1 para cada tabela) e 20 datasets para os arquivos (1 para cada arquivo), no total 40 datasets, bastante hein, imagina para dar manutenção nisso posteriormente ?! Fica complicado!

Para evitar a criação de tantos datasets, vamos utilizar parâmetros para criar 2 datasets genéricos, ou seja, um dataset que podemos informar que tabelas do banco queremos e um dataset para informar o nome do arquivo que vamos utilizar para trafegar dados. Estarei utilizando os componentes utilizados neste post para desenvolvermos esse exemplo >> LINK <<

  • Cenário
    • Foram inseridos mais 2 arquivos CSV dentro do Storage Account um chamado PESSOAS.CSV e outro CIDADES.CSV. Com isso agora temos 3 arquivos dentro do container. Queremos ter a possibilidade de informar qual o arquivo queremos carregar para dentro de uma tabela do banco de dados e para qual tabela o mesmo será inserido. Para este cenário devemos criar 2 datasets genéricos para receber os dados em questão.
CSV Pessoas

cod_pessoa;nome_pessoa;dt_nasc
1;Joanna;2000-05-12
2;Fernanda;1992-08-18
3;Mirella;1990-10-25
4;Mari;1996-04-09
5;Tatiane;2001-12-12
CSV Cidades

cod_cidade;nome_cidade;sigla_estado
1;Recife;PE
2;São Paulo;SP
3;Porto Alegre;RS
4;João Pessoa;PB
5;Rio de Janeiro;RJ

Inserindo arquivos no Container

1 – Realizar o Upload dos arquivos csv para o Container.
1.1 Clicar em Upload
1.2 Selecionar os arquivos na sua máquina local.
1.3 Clicar no botão Upload (botão azul)

2 – Os arquivos são carregados com sucesso. Ao final do procedimento você deve ter 3 arquivos no container.
CSV’s: Produtos, Cidades e Pessoas

Criando Dataset Genérico – Blob Storage

1 – Com o ADF aberto, você deve ir na seção Datasets e executar os seguintes passos
1.1 – clicar nos 3 pontos (…)
1.2 – Eelecionar New dataset

2 – Uma tela na lateral será exibida para que um novo dataset seja configurado. Vamos adicionar um dataset novo para o blob
2.1 – Selecionar a opção Azure Blob Storage
2.2 – Clicar no botão continue

3 – Uma vez com o dataset selecionado, devemos escolher o formato dos arquivos que iremos trabalhar.
3.1 – Selecionar a opção DelimitedText (arquivo CSV, pode ser arquivos TXT também)
3.2 – Clicar no botão continue

4 – Na tela de Set properties vamos configurar as opções do dataset.
4.1 – Informar o nome do seu dataset. No exemplo coloquei o nome Dataset_Generico_blob
4.2 – Informar o Linked Service que conexão com o Blob Storage
4.3 – Clicar no desenho da pasta, uma nova tela será exibida.
4.4 – Nesta etapa vamos selecionar APENAS a pasta e não os arquivos contidos nela.
4.5 – Clicar no botão OK.
4.6 – Ao clicar em OK, voltamos para a tela Set properties, no caminho do File path está contida a pasta raiz do blob. Clicamos na Flag First row as header. Marcar esta flag significa que, a primeira linha do arquivo é o cabeçalho da mesma.
4.7 – Clicar no botão OK.

5 – A tela do novo Dataset é exibida, vamos executar alguns passos para deixa-lo genérico.
5.1 – Na opção Column Delimiter, alteremos o tipo para Semicolon (;), ou seja, ponto-e-vírgula.
5.2 – Clicamos na aba Parameters (parâmetros).

6 – A aba Parameters vamos adicionar 1 parâmetro para ser utilizado pelo nosso dataset genérico com o blob. Os parâmetros podem ser utilizados para armazenar um valor e passa-los dentro dos datasets. Neste exemplo, vamos receber o nome do arquivo e ele vai procura-lo dentro da pasta raiz do dataset.
6.1 – Clicar no nome New.
6.2 – Na caixinha que é exibida após clicar no botão coloque o nome da variável. Colocamos o nome fileName. O tipo pode continuar string e o valor default em branco.

Após criar o parâmetro, retornamos para a aba Connection.

7 – Na aba connection vamos realizar alguns procedimentos para finalizar a configuração do primeiro dataset.
7.1 – Na opção File path, você deve clicar no textbox com o nome File. Neste textbox deveria estar o nome do arquivo, caso nos fossemos importar um arquivo especifico.
7.2 – Percebam que o nome ADD DYNAMIC CONTENT apareceu ao clicarmos no textbox, clique neste nome que apareceu. O ADF possui a opção de utilizamos Expressões, funções (como as funções SQL: Upper, concat, lower, substring e etc…) e variáveis de sistema. O objetivo desses itens é deixarem os objetos do ADF flexíveis para tratar informações, receber parâmetros externos e trabalhar com outros objetos.

Mais informações sobre as Expressões e Funções neste >> LINK <<
Mais informações sobre as Variáveis de Sistema do ADF neste >> LINK <<

8 – A tela do Add Dynamic Content vamos na seção Parameters
8.1 – Selecionamos o nome do parâmetro que criamos anteriormente lá no Dataset. Quando clicamos no mesmo percebam que ele foi adicionado na caixa de funções e expressões.
8.2 – Clicar no botão Finish.

9 – Na tela principal do dataset percebam que o mesmo apareceu no textbox aonde deveria ficar o nome do arquivo. A partir de agora o nome do arquivo que queremos carregar será informado como parâmetro para o dataset.
9.1 – Ao finalizar todas as configurações, clique em Publish All para salvar todo o processo realizado.

10 – Na tela do Publish All
10.1 – Clique no botão Publish
10.2 – No desenho do sino vai aparecer uma notificação que a publicação ocorreu com sucesso.
10.3 – Clique no botão Close.

Criando Dataset Genérico – Azure SQL

1 – Na tela principal do ADF vamos repetir o processo de criação de um novo dataset. Clicar nos 3 pontos e selecionar a opção new dataset.
1.1 – Na tela do New Dataset selecionar a opção Azure SQL Database.
1.2 – Clicar no botão Continue.
1.3 – Na tela do Set properties colocar o nome do dataset. Para o exemplo coloquei o nome Dataset_Generico_AzureSQL.
1.4 – Selecionar o Linked Service que faz conexão com o Azure SQL Database.
1.5 – Deixar sem nome de tabela a principio.
1.6 – Na opção Import Schema deixar marcado como None.
1.7 – Clicar no botão OK.

2 – Na tela principal do dataset vamos começar a configura-lo para ficar dinâmico.
2.1 – Clicar na aba parâmetros.
2.2 – Adicionar dois parâmetros chamados tableSchema e tableName, ambos do tipo string e sem valor default.
2.3 – Voltar para a aba Connection.

3 – Na tela principal do dataset vamos configurar os seguintes passos.
3.1 – Clicar na Flag Edit. Ao habilitar essa flag, ele vai habilita os textbox para input manual das informações, neste caso, o schema e o nome da tabela.
3.2 – Clicar no textbox do schema e selecionar Add dynamic content.
3.2.1 – Selecionar o parâmetro tableSchema.
3.2.2 – Verificar se o nome do parâmetro apareceu na escrita das funções e expressões.
3.2.3 – Clicar no botão Finish.

3.3 – Clicar no textbox da table e selecionar Add dynamic content.
3.3.1 – Selecionar o parâmetro tableName.
3.3.2 – Verificar se o nome do parâmetro apareceu na escrita das funções e expressões.
3.3.3 – Clicar no botão Finish

4 – Na tela principal do dataset vejam que os textbox tanto do schema quanto da tabela foram preenchido com os parâmetros que foram definidos anteriormente. Clicar em Publish All para salvar todo o procedimento realizado.

5 – Na tela do Publish All realizar os seguintes procedimentos:
5.1 – Clicar no botão Publish
5.2 – Verificar a notificação da publicação realizada com sucesso.
5.3 – Clicar em close.

6 – Ao final de todo o processo de criação dos datasets genéricos, dois novos datasets são adicionados na seção Datasets do ADF.

Criação Pipeline de Teste – ADF

1 – Na seção pipeline do ADF, seguir os seguintes passos.
1.1 – Clicar nos 3 pontos (…).
1.2 – Selecionar a opção New Pipeline.

2 – Na tela de desenvolvimento do pipeline vamos realizar 3 procedimentos iniciais.
2.1 – Mudar o nome do pipeline para pipeline_teste_generico.
2.2 – Na opção Activities > Move & transform > Selecione o componente Copy data.
2.3 – Configurar o Source e o Sink.

3 – Procedimentos de configuração do Source:
3.1 – Selecionar o componente Copy data1
3.2 – Listar as opções disponíveis de datasets no Source Dataset.
3.3 – Selecionar a opção Dataset_Generico_blob.

4 – Com o dataset Dataset_Generico_blob selecionado percebam que o textbox fileName foi exibido e aguarda o input das informações.
3.1 – Informar o nome do arquivo CSV para teste do pipeline. Utilizaremos o arquivo cidades.csv
3.2 – Após informar o nome do arquivo, clicar em Preview Data, para visualizar os dados contidos no arquivo.
3.3 – Após visualizar um Preview dos dados do arquivo, clicar no X para fechar a tela.

5 – Procedimento para configuração do SINK.
5.1 – Selecionar a aba Sink.
5.2 – Listar as opções disponíveis de datasets no Source Dataset.
5.3 – Selecionar a opção Dataset_Generico_AzureSQL.

6 – Com o dataset Dataset_Generico_AzureSQL selecionado percebam que os textboxes tableSchema e tableName foram exibidos e aguardam o input das informações.
6.1 – Informar o nome do schema da tabela que será salva no banco de dados. Colocamos o schema DBO.
3.2 – Informar o nome da tabela que será salva no banco de dados. Colocamos o nome Cidades.
3.3 – No Table Option, marcar a opção Auto Create Table. Ao marcar esta opção, o ADF se encarrega de criar a estrutura da tabela no banco de dados. Obs.: Ele segue a tipagem do arquivo de origem, ou seja, no nosso caso ele vai assumir que todas as colunas são do tipo texto.

Clicar em Publish All.

7 – Na tela do Publish All realizar os seguintes procedimentos:
7.1 – Clicar no botão Publish
7.2 – Verificar a notificação da publicação realizada com sucesso.
7.3 – Clicar em close.

8 – Após publicar as alterações vamos executar o pipeline.
8.1 – Clicar no botão Debug.
8.2 – Clicar na aba OUTPUT para acompanhar o processo de carga do pipeline.

9 – Uma vez que o pipeline foi executado com sucesso de acordo com o status. Na aba OUTPUT podemos ter mais algumas informações sobre a execução.
9.1 – Clicar no desenho do óculos.
9.1.1 – Na tela de detalhes você pode analisar: n° de arquivos lidos, n° de linhas lidas e escritas, tempo de processamento, total de recursos consumidos e etc.

Conferindo os dados

1 – Para conferirmos se o pipeline funcionou corretamente, vamos acessar o Management Studio e conecta-lo com nosso Azure SQL Database. Você também pode conecta-lo utilizando o Visual Code >> LINK << ou o Dbeaver >> LINK <<

1.1 – Vamos navegar por database_name > Tables > dbo.Cidades > Columns. Percebam que a tabela foi criada automaticamente pelo ADF, porém, sua tipagem ficou definida como nvarchar (max). Este é um ponto de atenção e devemos tomar bastante cuidado, pois influência no armazenamento e performance do banco de dados.
1.2 – Executamos uma consulta na tabela Cidades e verificamos que foi retornado a quantidade de linhas contidas no arquivo original.
Com isso finalizamos nosso post.

Atenção: Se você esta com uma conta gratuita, pay-as-you-go ou de estudante, não esquecer de apagar os recursos criados nesta postagem. Para contas de estudante e gratuita a exclusão dos recursos evita o consumo dos créditos disponíveis, além disso, evita que aconteça cobrança indevida em sua subscription (assinatura). Para a conta pay-as-you-go é cobrado do cartão de crédito conforme o uso dos serviços, então, recomendo apagar para não gerar cobrança no seu cartão de crédito. Lembrar que o Azure SQL Database fica sempre ativo, então, sua cobrança acontecerá se não for deletado posteriormente.

Espero que tenham gostado desta postagem, vou fazer mais postagens técnicas sobre data factory. Aguardem que 2021 vai ter muito conteúdo legal no blog.

Desejo a todos uma boa leitura, boa prática e bons estudos.

Para quem quer estudar:

  • Para a Certificação Microsoft MTA Database Fundamentals | Banco de Dados Relacional e Linguagem T-SQL.
    • Segue o link do curso na Udemy. >> LINK <<
  • Sobre Bancos da Dados no Azure
    • Segue o link do curso na Udemy. >> LINK <<

Não se esqueçam de avaliar esta postagem através da ESTRELAS abaixo das redes sociais, isso vai me ajudar muito a melhorar as postagens.

Quem quiser mandar comentários, sugestões, criticas e complementos, fiquem a vontade, pois feedbacks positivos ou negativos engradecem meu conhecimento para que possa melhorar as postagem para vocês.

Até a próxima o/

Acessem nossas Redes Sociais: