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 três 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 <<
  • Azure Data Factory: Criando datasets genéricos >> LINK <<

Lembrando da nossa nova serie de postagens, aonde vamos aprender sobre as Activities do ADF funcionam e como podemos utilizar em nossos projetos da vida real. Vou selecionar as activities que mais utilizo no meu dia a dia.

Hoje vamos mostrar como funciona o STORED PROCEDURE.

A activity STORED PROCEDURE realiza a chamada de uma stored procedure armazenada no Azure SQL Database, no SQL Dedicated Pool do Azure Synapse Analytics, no SQL Server contido em uma Máquina Virtual ou ambiente On-premise. As procedures podem ser executadas com ou sem parâmetros.

Para exemplificar, vamos realizar os seguintes passos:

1 – Criar uma tabela no banco de dados e inserir registros nesta tabela.
2 – Criar duas procedures para tratar os dados desta tabela.
3 – Criar um pipeline no ADF para realizar a chamada destas procedures.
4 – Analisar os dados alterados.

Criando os objetos no banco de dados

Com o nosso SQL Server Management Studio aberto vamos realizar os seguintes passos:

1 – Abrir uma nova janela de query conectado ao nosso banco de dados armazenado no Azure SQL Database.
2 – Vamos realizar a criação da tabela table_adf que contém 5 colunas na sua estrutura.
3 – Depois vamos realizar o insert de 10 linhas nesta tabela.
4 – Consultamos os dados na tabela table_adf através de um comando de SELECT.

Utilizem o script abaixo para realizar este procedimento

create table table_adf
(
id_prod int,
nome_prod varchar(30),
preco_prod money,
status_prod bit,
dt_insert datetime2
)

insert into table_adf (id_prod,nome_prod,preco_prod,status_prod,dt_insert)
values (1,'produto 1', 44.5, 1, null)
	  ,(2,'produto 2', 55.5, 1, null)
	  ,(3,'produto 3', 66.6, 1, null)
	  ,(4,'produto 4', 77.7, 1, null)
	  ,(5,'produto 5', 88.8, 1, null)
	  ,(6,'produto 6', 99.9, 1, null)
	  ,(7,'produto 7', 75.6, 1, null)
	  ,(1,'produto 1', 33.3, 1, null)
	  ,(2,'produto 2', 50.1, 1, null)
	  ,(3,'produto 3', 94.6, 1, null)


select * 
from table_adf

Depois da criação da tabela, vamos realizar a criação de 2 procedures que vão aplicar duas transformações nos dados da tabela.

1 – A procedure proc_activity_adf01 atualiza todos as linhas com a data do sistema (getdate) quando a coluna dt_insert contiver o valor nulo.

2 – A procedure proc_activity_adf02 atualiza a coluna status_prod para 0 quando a coluna preco_prod for menor que o valor informado no parâmetro e o status da mesma for igual a 1. Esta procedure recebe um valor como parâmetro.

3 – Uma vez com as procedures criadas, você pode verificar que elas existem acessando sua database > Programmability > Stored Procedures.

/*
Procedure para atualizar a coluna dt_insert com a data do sistema (getdate)
quando a coluna dt_insert contiver o valor nulo 
*/
create or alter proc proc_activity_adf01
as
begin 
	update table_adf
	set dt_insert = getdate()
	where dt_insert is null
end



/*
Procedure para atualizar a coluna status_prod para 0
quando a coluna preco_prod for menor que o valor informado no parâmetro
e o status da mesma for igual a 1.
*/
create or alter proc proc_activity_adf02
(@preco money)
as
begin 
	update table_adf
	set status_prod = 0
	where preco_prod < @preco
	and status_prod = 1
end

Criando o pipeline com a activity de Stored Procedure

Com o Azure Data Factory aberto vamos realizar os seguintes passos:

1 – Clicar no ícone do Editor.
2 – Selecionar Pipelines, clicar nos 3 pontinhos (…) ao lado do nome Pipeline.
3 – Selecionar a opção listada NEW PIPELINE.

Um novo pipeline será criado e aberto na janela de designer. Vamos realizar os seguintes passos:

1 – Em properties, mudar o valor do parâmetro Name para pipeline_proc. Clicar no ícone do properties para ocultar a tela.
2 – Na guia das activities, selecionar a categoria General
3 – Selecionar a Activity Stored Procedure.
4 – Arrastar duas activities de Stored Procedure para a tela de designer.
5 – Ligar a activity Stored Procedure1 com a activity Stored Procedure2.

Uma vez com a etapa anterior finalizada, iremos configurar o componente de stored procedure 1. Vamos realizar os seguintes passos:

1 – Clicar em cima do componente do stored procedure.
2 – Clicar na aba General.
3 – Na propriedade Name vamos colocar o nome executa_proc_01.
4 – Clicar na aba Settings
5 – No parâmetro Linked Service, vamos selecionar o linked service com nosso Azure SQL Database que é o ls_azuresql.
6 – No parâmetro Stored Procedure name, vamos selecionar a stored procedure proc_activity_adf01.
7 – Ao final do processo os parâmetros selecionados serão
Linked Service: ls_azuresql
Stored procedure name: dbo.proc_activity_adf01

Agora vamos configurar o componente de stored procedure 2. Vamos realizar os seguintes passos:

1 – Clicar em cima do componente do stored procedure.
2 – Clicar na aba General.
3 – Na propriedade Name vamos colocar o nome executa_proc_02.
4 – Clicar na aba Settings
5 – No parâmetro Linked Service, vamos selecionar o linked service com nosso Azure SQL Database que é o ls_azuresql.
6 – No parâmetro Stored Procedure name, vamos selecionar a stored procedure proc_activity_adf02.
7 – No parâmetro Stored Procedure Parameters, vamos clicar no botão Import para carregarmos os parâmetros da procedure.
8 – Os parâmetros da procedure serão carregados, neste caso o parâmetro preco foi carregado e na coluna Value vamos colocar o valor 50. Lembrando que, ao passar o parâmetro a procedure vai atualizar o status_prod para 0 quando houver valores menores que o valor informado no parâmetro.
9 – Ao finalizar a configuração da segunda procedure, vamos clicar em Debug para executarmos o pipeline.

Na aba Output, verificamos que as procedures foram executadas com sucesso.

Analisando os dados após execução da procedure

Uma vez que as procedures executaram, vamos analisar as informações no banco de dados:

1 – Vamos realizar uma consulta na tabela table_adf. Com o resultado exibido, podemos perceber duas alterações.

2 – A coluna dt_insert foi preenchida pela execução da primeira procedure, ou seja, se existiam linhas com o dt_insert com valor NULL, a procedure atualiza estas linhas com o valor da função getdate().

3 – Percebam que duas linhas tiveram o valor da coluna status_prod alterada para zero (0), ou seja, quando a procedure 02 foi executada com o valor 50 no parâmetro, foi realizado um update nas linhas que tinham valores menor que 50 na coluna preco_prod e o status_prod igual a 1. Apenas duas linhas continham valor menor que 50 na nossa tabela.

select * 
from table_adf
order by status_prod desc

Publicando alterações

Após conhecermos as propriedades da Stored Procedure , vamos publicar nossas alterações.

1 – Clicamos no botão Publish All. Uma tela lateral será exibida com os itens novos ou que foram alterados.
2 – Clicamos no botão Publish
3 – Aguardamos o processo de publicação finalizar. Uma vez que ele foi finalizado, clicar no ícone do sininho para ver se os itens foram publicados com sucesso.
4 – Clicar no botão close para fechar a janela de notificações.

Obs: A Stored Procedure pode ser bastante utilizada quando precisamos realizar transformações dentro do próprio database, ou seja, o ADF serve como orquestrador destas procedures armazenadas no seu banco de dados.

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.

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:

  • Curso preparatório para Certificação Microsoft MTA Database Fundamentals | BD Relacional e Linguagem T-SQL.
    • Segue o link do curso na Udemy. >> LINK <<
  • Curso Azure Databases para Iniciantes
    • Segue o link do curso na Udemy. >> LINK <<
  • Curso Azure Data Factory para Iniciantes
    • 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:

Publicidade