Olá galera o/

Essa é a primeira postagem de 2021 e vamos começar falando de serviços no Azure, especificamente o Azure Data Factory. Hoje vamos criar nosso primeiro pipeline de dados e ver como criar um Azure Data Factory para fazer transferência de dados entre 2 serviços do Azure. Para quem não conhece o Azure Data Factory (ADF), eu fiz uma postagem sobre o mesmo, aonde explico a sua estrutura e alguns componentes, para mais detalhes clicar no link ao lado >> LINK <<

Agora que sabemos um pouco sobre o ADF, vamos entender como será nosso cenário de desenvolvimentos e quais são os requisitos necessários para que possamos criar nosso primeiro pipeline de dados.

  • Cenário
    • Carregar os dados de um arquivo CSV (delimitado por ponto e virgula) armazenado em um container dentro de um Storage Accounts (conta de armazenado)
    • Utilizando uma atividade de Copy Data (Copia de Dados), iremos carrega-lo para uma tabela dentro do Azure SQL Database.
  • Itens necessários para o desenvolvimento
    1. Ter uma conta do azure, podendo ser de estudante ou free
      1. Conta de estudante >> LINK <<
      2. Conta Free >> LINK <<
    2. Criar um Storage Accounts
    3. Criar um container
    4. Fazer upload do arquivo para o container
    5. Criar um Azure SQL Database.
      1. Criando um Azure SQL Database >> LINK <<
    6. Criar o serviço do Azure Data Factory
    7. Configurar o ambiente do Azure Data Factory
    8. Criar um Pipeline de Dados

Para os itens 1 e 5, já existem postagens feitas no blog, é somente clicar no link e verificar sua criação. Para os itens 2, 3, 4, 6, 7 e 8 irei fazer um passo a passo nesta postagem. Então, let’s go !!!

Criação do Storage Account

1 – Vamos criar um recurso do tipo Storage Accounts em nosso ambiente do Portal Azure. Podemos criar através do “+ Create a Resource”, do “Storage Accounts” ou através do campo de pesquisa.

2 – No menu do lado direito clicar em “All services” > Storage > Storage accounts.

3 – Com o Storage Accounts aberto clicamos em “+Add”.

4 – Uma nova tela será exibida devemos preecher com algumas informações básicas. Lembrando que, há maneiras mais avançadas de realizar a criação de Um Storage Account, porém, para este exemplo, estamos criando um storage bem simples. Vamos ao passo a passo:
4.1 – Informar sua subscription (assinatura).
4.2 – Selecionar o seu Resource Group (grupo de recursso).
4.3 – Informar o Storage Account Name (nome do storage account).
4.4 – Informar a Location (localização), por padrão fica na mesma região do Resouce Group.
4.5 – Informar a Performance, deixamos por padrão Standard.
4.6 – Informar a versão do Storage, selecionar a opção StorageV2.
4.7 – Informar a Replication (replicação), selecionamos a opção LRS.
4.8 – Clicar em “Review + create”. Todas as informações preenchidas anteriormente serão validadas e se estiveram OK, o botão “Create” ficará ativo. Clicar em “Create” para criar o recurso.

5 – Com o recurso criado, clicar em “Go to resource’. Uma nova tela será exibida com todas as informações e itens do storage. Clicar na opção “Containers”.

6 – Com a tela de Containers aberta, clicar em “+ Container”, uma tela lateral será exibida para informar:
6.1 – Informar o Nome do container
6.2 – Selecionar o nível de acesso público, por padrão utilizaremos o Private.
6.3 – Clicar em “Create” para criar o container.

7 – Clicar em cima do container criado.

8 – Na tela que foi exibida, seguir os seguintes passos:
8.1 – Clicar em “Upload”
8.2 – Na tela exibida na lateral, clicar na pasta em azul para selecionar o arquivo CSV no seu ambiente.
8.3 – Uma vez com o arquivo carregado, clicar em “Upload”
8.4 – O arquivo é carregado para dentro do Container.

Registros para criar o arquivo CSV

PRODCODIGO;PRODNOME;PRODPRECO;PRODESTOQUE
1;ARMARIO MOGNO A1;"240.50";10
2;GELADEIRA BRASTEMP 400 L;"1500.50";5
3;LG K10 POWER;"750.00";50
4;ACER GAMER I7;"7500.00";3
5;DELL I7 16 GB;"5800.00";1
6;FIRESTON ARO 14;"199.99";100
7;PIRELI ARO 16;"339.99";100
8;MICHELAN ARO 15;"449.99";50
9;IOS 10;"8000.00";50
10;PS 4;"2000.00";20
11;XBOX;"2200.00";60
12;FOGÃO 8 BOCAS BRASTEMP;"1500.00";240

Criação Data Factory

1 – Para criar o serviço do Azure Data Factory vamos seguir os seguintes passos:
1.1 – Clicar em “All services” > Analytics > Data Factories

2 – Na página do Data factories, clicar em “+Add”.

3 – Na tela de criação vamos seguir os seguintes passos:
3.1 – Informar a subscription (assinatura).
3.2 – O resource group (grupo de recurso).
3.3 – A region, geralmente deve estar na mesma region do grupo de recurso.
3.4 – Informar o nome do Data Factory.
3.5 – Selecionar a versão a ser utilizada, vamos utilizar a versão V2.
3.6 – Clicar em “Next: Git Configuration >”

4 – Vocês podem conectar o Azure Data Factory com o GitHub ou o Azure Devops para assim versionar todo os pipelines construídos no ADF.
4.1 – Para este exemplo iremos marcar a flag “Configure Git Later”, ou seja, configurar o depois (teremos uma postagem sobre isso futuramente). Clicar em “Next: Networking>”.
4.2 – No Networking, não vamos modificar nada, clicamos em “Next: Advanced>”.

4.3 – Em Advanced não marcar nenhum opção e clicar em “Next: Tags”.
4.4 – Em Tags também não marcamos nada e clicamos em “Review + Create”.

4.4 – Na parte do Review + Create, clicar no botão “Create”.

4.5 – Com o serviço criado, clicar em “Go to resource”, a tela do ADF será exibida, nesta tela clicar em “Author & Monitor” para acessar o ambiente de desenvolvimento do ADF.

4.6 – Na tela inicial do ADF temos as seguintes opções: Criar
4.6.1 – Criar pipelines sem template, criar data flows, criar pipeline a partir de template, copiar dados entre duas origens, configurar a conexão do ADF com o SSIS através do Integration Runtime Self-Hosted e configurar o GIT.
4.6.2 – Além disso temos um menu de opções na lateral que se dividem em 3 camadas.

4.6.3 – Author: é o local aonde criamos nossos pipelines, datasets, data flows e fluxos de ingestão e tratamento de dados.

4.6.4 – Monitor: local aonde ocorrem os monitoramentos de execução de pipelines, triggers, analise dos linked services, alertas e métricas.

4.6.5 – Manage: local aonde configuramos nossos integration runtimes, linked services, versionamentos, parâmetros e triggers.

5 – O Data Factory tem uma hierarquia para criação dos seus objetos, não é simplesmente abrir o pipeline e começar a construir processos de ETL ou ELT. Para criar um pipeline, primeiros precisamos criar um integration runtime, depois um linked services, depois um dataset e por ultimo o pipeline, pois cada componente depende do outro. Vamos entender o que são cada objetos desses

5.1 – Integration Runtime: É a infraestrutura de computação usada pelo Azure Data Factory para fornecer os seguintes recursos de integração de dados em diferentes ambientes de rede.

5.2 – Linked Service: Consiste nos detalhes da conexão para uma fonte de dados como um arquivo do Azure Blob Storage ou um Azure SQL Database ou para um serviço de computação como HDInsight, Azure Databricks, Azure Data Lake Analytics e Azure Batch.

5.3 – Datasets: Representa estruturas do armazenamento de dados, que simplesmente, apontam ou referenciam os dados que você deseja usar em suas atividades como entradas ou saídas. Conecta-se com os dados através do Linked Service.

5.4 – Pipeline: Um pipeline é um agrupamento lógico de atividades. Normalmente, ele conterá um conjunto de atividades tentando alcançar o mesmo objetivo final. As atividades em um pipeline podem ser encadeadas para operar sequencialmente, ou eles podem operar independentemente em paralelo.

6 – Exemplo de integration runtimes, por padrão o ADF já vem com o AutoResolveIntegrationRuntime habilitado, ou seja, esse conector permite com que o ADF se conecte com todos os serviços do Azure disponíveis.

7 – Também há possibilidades de criar o integration runtime self-hosted, ele nos permite conectar o ADF com ambientes on-premise (local) em uma rede privada ou com recursos externos. Esses conectores permitem por exemplo ler dados de um SQL Server em um servidor local ou executar pacotes do Integration Services (SSIS) e etc.

Criando Linked Services

1 – Agora que entendemos um pouco sobre a estrutura da Data Factory, vamos criar nossos Linked Services para nos conectarmos com os serviços que criamos anteriormente. Clicar em “New” no Linked Services.

2 – Ao clicar no botão “New”, uma tela é exibida na lateral com todos os tipos de conectores que o Data Factory pode se conectar. O gif abaixo mostram as possibilidades de conectadores.

3 – Vamos criar o primeiro Linked Service com o nosso Blog Storage. Selecionar o icone do “Azure Blob Storage” > Clicar em “Continue”. Uma nova tela é exibida, seguir os seguintes passos:
3.1 – Informar o nome do Linked Service
3.2 – Selecionar a subscription (assinatura)
3.3 – Selecionar o Storage Account criado anteriormente.
3.4 – Teste a conexão.
3.5 – Clicar em “Create”.

4 – Com isso temos nosso primeiro Linked service criado. Iremos repetir o processo novamente para criar o linked service com o SQL Database, clicar em “+NEW”.

5 – Selecionar Azure SQL Database, clicar em “continue”, na tela que é exibida, configurar os seguintes passos:
5.1 – Nome do Linked Service.
5.2 – Selecionar a sua subscription (assinatura).
5.3 – Informar em qual servidor o banco esta.
5.4 – Selecionar a database em questão.
5.5 – Escolher o modo de autenticação com o banco (pode ser via Active Directory ou SQL Authentication).
5.6 – Se for autenticação do SQL, informa o usuário definido na criação do servidor.
5.7 – Informar senha do usuário.
5.8 – Testar conexão.
5.9 – Clicar em “Create”

6 – Ao final do processo, temos 2 linked services criados, um com o blob storage e outro o Azure SQL Database.

8 – Na sua conexão com do Azure SQL Database, criar uma tabela chamada tb_csv_produto.

CREATE TABLE [dbo].[tb_csv_produto](
	[PRODCODIGO] INT NULL,
	[PRODNOME] VARCHAR(30) NULL,
	[PRODPRECO] DECIMAL(10,2) NULL,
	[PRODESTOQUE] INT NULL
) 

Criando Datasets

1 – Na seção do Author (Desenho do Lápis), vamos criar nossos os Datasets. Na seção Datasets, clicar nos 3 pontos (“…”) e selecionar “New dataset”.

2 – Na tela lateral que é exibida vamos seguir um passo a passo para configurar o dataset com o o blob storage.
2.1 – New dataset: Selecionar Azure Blob Storage e clicar em “Continue”.
2.2 – Select format: Selecionar DelimitedText (se aplica para arquivos demitidos como csv ou txt) e clicar “Continue”. Lembrando que o nosso arquivo é no formato csv.
2.3 – Set properties: 1º Configurar o nome do dataset, 2º selecionar o linked service com o Storage, 3º selecionar em qual pasta do container esta o arquivo.
2.4 – Choose a file or folder: Selecionar o arquivo que esta no container.
2.5 – Set properties: Selecionar a flag “First row as header” (primeira coluna como cabeçalho) e clicar em “OK”.

3 – Com o dataset criado, primeiro vamos realizar algumas configurações.
3.1 – Na opção Column delimiter selecionar o valor Semicolon(;), ou seja, ponto e virgula.
3.2 – Clicar em schema.

4 – Na aba de schema, você poderá visualizar a estrutura de colunas do arquivo, se não houver schema, você pode clicar em “Import schema” para o dataset buscar a estrutura do arquivo.

5 – Na tela anterior, você pode clicar em “Preview Data” para ter uma visualização resumida dos dados do arquivo, neste caso as linhas do CSV.

6 – Após configurar o 1º dataset, o botão azul chamado “Publish all” ficará habilitado. Ele é responsável por dar um save em todos os componentes criados no Author (pipelines, datasets, data flows). Clicar em “Publish” e esperar a publicação ser finalizada.

7 – Vamos realizar o mesmo processo, porém agora selecionando o Azure SQL Database.
7.1 – New dataset: Selecione o Azure SQL Database, clicar em “Continue”.
7.2 – Set properties: 1º informar o nome do dataset, 2º selecionar os linked service criado para o Azure SQL, 3º selecionar a tabela criada no Azure SQL e por ultimo clicar em “OK”.

8 – Percebam que a tabela já foi carregada, clicar em schema, vejam quem ele carregou o schema da tabela que esta contida no banco do Azure SQL. Feito todo o processo, clicar em “Publish All”, clica em “publish, depois aguardar a publicação finalizar.

9 – Ao final de todo o processo, criamos 2 datasets, um com o arquivo csv que esta no blob e outro com nossa tabela do Azure SQL.

Criando Pipeline – CSV para BD

1 – Agora vamos na seção Pipilines, clicamos nos 3 pontos (…) e selecionamos a atividade Copy Data e arrastamos para a tela do pipeline.
Uma Activity é atividade representa uma ação ou a etapa de processamento. Por exemplo, você possuir uma atividade para copiar dados entre uma fonte(origem) e um destino, executar uma procedure ou executar um notebook do Databricks.

2 – Clicamos em cima da atividade de Copy Data que esta dentro do pipeline e percebam que algumas abas serão exibidas, vamos analisar 3 delas.
2.1 – Source: Aqui iremos apontar qual será o dataset de origem dos dados. Para o exemplo selecionar o dataset do arquivo csv.

2.2 – Sink: Aqui iremos apontar o dataset de destino dos dados. Para nosso exemplo, vamos colocar o dataset com nossa tabela do banco de dados. Notem que existe para conexões com bancos de dados uma opção chama Pre-copy script, ou seja, antes de copiar os dados eu posso fazer um script em linguagem SQL para realizar uma operação antes dos dados serem carregados na tabela. Para nosso exemplo, toda vez antes de carregar os dados, a tabela é truncada.

2.3 – Na aba Mapping vc pode fazer o mapeamento das colunas de origem e destino. Caso não seja exibido, você poderá clicar em Import schemas. Ele fara um de-para entre as colunas da origem e destino, no exemplo, o mapeamento conseguiu entender quem vai para qual coluna, porque as colunas da origem e destino tem o mesmo nome. Após todo o processo, clicar em “Publish all” e depois em Publish.

3 – Uma vez que configuramos nosso pipeline, vamos executar o mesmo para transferir os dados do CSV no Blob para a nossa tabela no Azure SQL Database. Para executar o pipeline temos 2 maneiras, a primeira é através da trigger e a segunda através do debug. Vamos entender cada uma delas.

3.1 – Trigger: A trigger executa um pipeline a partir de um agendamento, porém, podemos executa-la sem ter um agendamento criado. Clicamos em Add trigger.
3.2 – Selecionar a opção Trigger now. Porém, através do New/Edit podemos criar uma agendamento para que a trigger execute o pipeline automaticamente.
3.3 – Na tela Pipeline Run clicamos em “OK”.
3.4 – Para analisar se o pipeline executou conforme o esperado, vamos no menu lateral do ADF e selecionamos Monitor (ícone de um velocímetro), na tela exibida clicamos na seção Runs > Pipelines Runs. Será listado todos os pipelines do data factory que foram executados, selecionar a aba Triggered, ao selecionar esta aba, será possível ver os pipelines executados por uma ação de trigger, além de verificar se o mesmo foi executado com sucesso ou erro. Para o nosso exemplo o pipeline1 foi executado com sucesso.

3.5 – A outra maneira de executar um pipeline é através do debug. Basta clicar no debug e ele vai executar o pipeline em tempo real. No momento da execução uma aba chamada Output é exibida mostrando se o pipeline executou com sucesso ou erro.

4 – Após todo esse processo, temos os dados do CSV importados para nossa tabela no Azure SQL Database utilizando o Azure Data Factory. A query abaixo foi feita no Management Studio com conexão ao Azure SQL Database.

SELECT *
FROM [dbo].[tb_csv_produto]

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: