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 <<
- Azure Data Factory: Criando triggers do tipo Schedule>> LINK <<
- Azure Data Factory: Criando triggers do tipo Storage Events >> LINK <<
- Azure Data Factory: Criando triggers do tipo Tumbling Window >> 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 Get Metadata.
O Get Metadata permite a leitura de informações de metadados de suas fontes de dados. Atualmente o tamanho máximo dos metadados retornados é 4 MB. Abaixo segue uma lista de atributos que podemos utilizar dentro do componente Get Metadata. Iremos mostrar o retorno de cada um deles.
Metadata type | Tipo de dados | Description |
---|---|---|
itemName | File Storage | Nome do arquivo ou pasta. |
itemType | File Storage | Tipo do arquivo ou pasta . Retorna o valor retornado é File ou Folder |
size | File Storage | Tamanho do arquivo em bytes. Aplicado somente para arquivos. |
created | File Storage | Data e hora de criação do arquivo ou pasta. |
lastModified | File Storage | Última data de modificação do arquivo ou pasta. |
childItems | File Storage | Lista de subpastas e arquivos dentro de uma determinada pasta. Aplicável apenas ao objeto de pasta. O valor de saída é uma lista de nome e tipo de cada item filho. |
contentMD5 | File Storage | MD5 do arquivo. Aplicável apenas ao arquivo. |
structure | File and database systems | Estrutura de dados dentro do arquivo ou tabela de banco de dados relacional. O valor de saída é uma lista de nome e tipo de coluna. |
columnCount | File and database systems | Número de colunas em um arquivo ou tabela relacionalNumber of columns in the file or relational table. |
exists | File and database systems | Se um arquivo/pasta/tabela existe ou não. Observe que se “exists” for especificado na lista de campos Get Metadata, a atividade não falhará mesmo quando o item (arquivo / pasta / tabela) não existir; em vez disso, ele retorna existe: falso na saída. |
Upload no Storage Account
Para realizarmos nosso post, será necessário realizar o upload de um arquivo CSV chamado cidades.csv para o Container source. Abaixo, segue o código do arquivo CSV.
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

Criando pipeline com a activity Get Metadata
1 -Vamos iniciar a criação de um novo pipeline que vai conter a activity Get Metadata.
1.1 – Clicar no ícone de +.
1.2 – Na lista que será exibida, clique em Pipeline.
2 – Quando a tela do pipeline for exibida, vamos executar os seguintes passos:
2.1 – Colocar o nome do pipeline como pipe_get_metadata.
2.2 – Nas Activities, clicar na categoria General. Selecionar a Activity Get Metadata e arrasta-la para a tela de Designer dos pipelines.
2.3 – Clicar em cima do activity.
2.4 – Selecionar a aba Dataset.
3 – Ao clicar na aba Dataset, devemos selecionar qual Dataset vamos utilizar na Activity. Iremos selecionar o dataset ds_csvfiles.
4 – Após selecionar o dataset genérico, devemos configurar o mesmo.
4.1 – O parâmetro folderName recebe o nome do Container. Iremos informar o container source.
4.2 – O parâmetro fileName recebe o nome do arquivo armazenado no container. Iremos informar o arquivo cidades.csv.
4.3 – Na opção Field List, vamos clicar no Botão New.
4.4 – Será exibida a lista de propriedades que podem ser utilizadas pelo Get Metadata. Iremos explorar cada uma destas propriedades.
Get Metadata – Child Items
1 – Para testar a propriedade Child Itens, vamos mudar o parâmetro fileName do nosso dataset genérico para *.csv, isto porque a propriedade Child Items lista as subpastas e arquivos dentro de uma determinada pasta. Quando colocamos *.csv, estamos ignorando o nome de um arquivo especifico, ou seja, queremos listar todos os itens que tem a extensão csv dentro do container específico.
1.1 – Mudar o fileName de cidades.csv para *.csv
1.2 – Selecionar a propriedade Child Items
1.3 – Clicar no botão Debug.
2 – Após execução, vamos analisar a saída.
2.1 – Clicamos no ícone do Output.
2.2 – Verifiquem que, os itens filhos da pasta Source até o momento são um arquivo com nome cidades.csv e e do tipo file.
Get Metadata – Column count
1 – Para testara propriedade Column Count, vamos voltar o parâmetro fileName do nosso dataset genérico para cidades.csv. Esta propriedade conta a quantidade de colunas de um determinado dataset podendo ser arquivos ou tabelas de um banco relacional.
1.1 – Mudar o fileName de *.csv para cidades.csv
1.2 – Selecionar a propriedade Column Count
1.3 – Clicar no botão Debug.
2 – Após execução, vamos analisar a saída.
2.1 – Clicamos no ícone do Output.
2.2 – Verifiquem que, na saída ele nos retornou a quantidade de colunas que o nosso arquivo possui.
Get Metadata – Content MD5
1 – Esta propriedade retorna o MD5 do arquivo. Aplicável apenas ao arquivo.
1.1 – Selecionar a propriedade Column Count
1.2 – Clicar no botão Debug.
2 – Após execução, vamos analisar a saída.
2.1 – Clicamos no ícone do Output.
2.2 – Verifiquem que, na saída ele nos retornou o valor MD5 do nosso arquivo.
Get Metadata – Exists
1 – Esta propriedade verifica se um arquivo, pasta ou tabela existe. Caso exista, o valor TRUE será retornado, caso não, o valor false será retornado.
1.1 – Selecionar a propriedade Exists
1.2 – Clicar no botão Debug.
2 – Após execução, vamos analisar a saída.
2.1 – Clicamos no ícone do Output.
2.2 – Verifiquem que, na saída ele nos retornou o valor TRUE, isso indica que nosso arquivo existe no nosso dataset.
Get Metadata – Item name
1 – Esta propriedade exibe o nome de um arquivo ou pasta do nosso dataset.
1.1 – Selecionar a propriedade Item name
1.2 – Clicar no botão Debug.
2 – Após execução, vamos analisar a saída.
2.1 – Clicamos no ícone do Output.
2.2 – Verifiquem que, na saída ele nos retornou o nome do nosso arquivo.
Get Metadata – Item Type
1 – Esta propriedade exibe o tipo de um arquivo ou pasta do dataset.
1.1 – Selecionar a propriedade Item type
1.2 – Clicar no botão Debug.
2 – Após execução, vamos analisar a saída.
2.1 – Clicamos no ícone do Output.
2.2 – Verifiquem que, na saída ele nos retornou que o arquivo do dataset é do tipo File, caso fosse um pasta, ele nos retornaria o tipo Folder.
Get Metadata – Last modified
1 – Esta propriedade exibe a última data de modificação de um arquivo ou pasta.
1.1 – Selecionar a propriedade Last modified
1.2 – Clicar no botão Debug.

2 – Após execução, vamos analisar a saída.
2.1 – Clicamos no ícone do Output.
2.2 – Verifiquem que, na saída ele nos retornou a última data de modificação do nosso arquivo.
Get Metadata – Size
1 – Esta propriedade exibe o tamanho de um arquivo. Esta propriedade é aplicável apenas em arquivos.
1.1 – Selecionar a propriedade Size
1.2 – Clicar no botão Debug.
2 – Após execução, vamos analisar a saída.
2.1 – Clicamos no ícone do Output.
2.2 – Verifiquem que, na saída ele nos retornou o tamanho do nosso arquivo em bytes.
Get Metadata – Structure
1 – Esta propriedade exibe a estrutura dentro de um arquivo ou tabela de banco de dados relacional. O valor de saída é uma lista de nome e tipo de coluna.
1.1 – Selecionar a propriedade Structure
1.2 – Clicar no botão Debug.
2 – Após execução, vamos analisar a saída.
2.1 – Clicamos no ícone do Output.
2.2 – Verifiquem que, na saída ele nos retornou a estrutura do nosso arquivo CSV, exibindo o nome das colunas e seus respectivos tipos de dados.
Publicando alterações
1 – Após conhecermos as propriedades do Get Medatata, vamos publicar nossas alterações.
1.1 – Clicamos no botão Publish All.
1.2 – Uma tela lateral será exibida com os itens novos ou que foram alterados. Clicamos no botão Publish e aguardamos o processo de publicação finalizar.
Obs: O Get Metadata é bastante utilizando em conjunto com Activities Condicionais e de iteração como ForEach, If Condition, Until, Switch.
Utilizaremos o Get Metadata em exemplos práticos quando abordamos sobre estas activities condicionais e de iteração.
Geralmente utilizo a propriedade child items para fazer a leitura de uma lista de arquivos ou tabelas, uma vez que o array é gerado, eu pego esta lista e começo a fazer loops utilizando uma activity de ForEach, cada item é iterado no loop e pode ser utilizado por outra activity que internamente estará dentro do ForEach. Vamos fazer uma postagem bem legal sobre este componente.
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: