Editar

Extração, transformação e carregamento (ETL)

Azure Synapse Analytics
Azure Data Factory

Um problema comum que as organizações enfrentam é como coletar dados de várias fontes, em vários formatos. Em seguida, você precisaria movê-lo para um ou mais armazenamentos de dados. O destino pode não ser o mesmo tipo de armazenamento de dados que a origem. Muitas vezes, o formato é diferente, ou os dados precisam ser moldados ou limpos antes de carregá-los em seu destino final.

Várias ferramentas, serviços e processos foram desenvolvidos ao longo dos anos para ajudar a enfrentar esses desafios. Não importa o processo usado, há uma necessidade comum de coordenar o trabalho e aplicar algum nível de transformação de dados dentro do pipeline de dados. As seções a seguir destacam os métodos comuns usados para executar essas tarefas.

Processo de extração, transformação e carregamento (ETL)

Extrair, transformar e carregar (ETL) é um pipeline de dados usado para coletar dados de várias fontes. Em seguida, ele transforma os dados de acordo com as regras de negócios e carrega os dados em um armazenamento de dados de destino. O trabalho de transformação no ETL ocorre em um mecanismo especializado e geralmente envolve o uso de tabelas de preparo para armazenar temporariamente os dados à medida que eles são transformados e, finalmente, carregados em seu destino.

Diagram of the extract-transform-load (ETL) process.

A transformação de dados que ocorre geralmente envolve várias operações, como filtragem, classificação, agregação, junção de dados, limpeza de dados, desduplicação e validação de dados.

Muitas vezes, as três fases do ETL são executadas em paralelo para economizar tempo. Por exemplo, enquanto os dados estão sendo extraídos, um processo de transformação pode estar trabalhando em dados já recebidos e prepará-los para carregamento, e um processo de carregamento pode começar a trabalhar nos dados preparados, em vez de esperar que todo o processo de extração seja concluído.

Serviço do Azure relevante:

Outras ferramentas:

Extração, carregamento e transformação (ELT)

Extrair, carregar e transformar (ELT) difere do ETL apenas no local onde a transformação ocorre. No pipeline ELT, a transformação ocorre no armazenamento de dados de destino. Em vez de usar um mecanismo de transformação separado, os recursos de processamento do armazenamento de dados de destino são usados para transformar dados. Isso simplifica a arquitetura, removendo o mecanismo de transformação do pipeline. Outro benefício dessa abordagem é que o dimensionamento do armazenamento de dados de destino também dimensiona o desempenho do pipeline ELT. No entanto, o ELT só funciona bem quando o sistema de destino é poderoso o suficiente para transformar os dados de forma eficiente.

Diagram of the extract-load-transform (ELT) process.

Os casos de uso típicos do ELT se enquadram no domínio do big data. Por exemplo, você pode começar extraindo todos os dados de origem para arquivos simples em armazenamento escalável, como um sistema de arquivos distribuído Hadoop, um repositório de blob do Azure ou o Azure Data Lake gen 2 (ou uma combinação). Tecnologias, como Spark, Hive ou Polybase, podem ser usadas para consultar os dados de origem. O ponto-chave com o ELT é que o armazenamento de dados usado para executar a transformação é o mesmo armazenamento de dados onde os dados são consumidos. Esse armazenamento de dados lê diretamente do armazenamento escalável, em vez de carregar os dados em seu próprio armazenamento proprietário. Essa abordagem ignora a etapa de cópia de dados presente no ETL, que geralmente pode ser uma operação demorada para grandes conjuntos de dados.

Na prática, o armazenamento de dados de destino é um data warehouse usando um cluster Hadoop (usando Hive ou Spark) ou um pool dedicado SQL no Azure Synapse Analytics. Em geral, um esquema é sobreposto aos dados de arquivo simples no momento da consulta e armazenado como uma tabela, permitindo que os dados sejam consultados como qualquer outra tabela no armazenamento de dados. Elas são chamadas de tabelas externas porque os dados não residem no armazenamento gerenciado pelo próprio armazenamento de dados, mas em algum armazenamento externo escalável, como o repositório de data lake do Azure ou o armazenamento de blobs do Azure.

O armazenamento de dados gerencia apenas o esquema dos dados e aplica o esquema na leitura. Por exemplo, um cluster Hadoop usando o Hive descreveria uma tabela do Hive em que a fonte de dados é efetivamente um caminho para um conjunto de arquivos no HDFS. No Azure Synapse, o PolyBase pode obter o mesmo resultado — criando uma tabela em relação aos dados armazenados externamente ao próprio banco de dados. Uma vez que os dados de origem são carregados, os dados presentes nas tabelas externas podem ser processados usando os recursos do armazenamento de dados. Em cenários de big data, isso significa que o armazenamento de dados deve ser capaz de processamento paralelo maciço (MPP), que divide os dados em partes menores e distribui o processamento das partes em vários nós em paralelo.

A fase final do pipeline ELT é normalmente transformar os dados de origem em um formato final que seja mais eficiente para os tipos de consultas que precisam ser suportadas. Por exemplo, os dados podem ser particionados. Além disso, o ELT pode usar formatos de armazenamento otimizados, como o Parquet, que armazena dados orientados a linhas de forma colunar e fornece indexação otimizada.

Serviço do Azure relevante:

Outras ferramentas:

Fluxo de dados e fluxo de controle

No contexto de pipelines de dados, o fluxo de controle garante o processamento ordenado de um conjunto de tarefas. Para impor a ordem de processamento correta dessas tarefas, restrições de precedência são usadas. Você pode pensar nessas restrições como conectores em um diagrama de fluxo de trabalho, conforme mostrado na imagem abaixo. Cada tarefa tem um resultado, como sucesso, fracasso ou conclusão. Qualquer tarefa subsequente não inicia o processamento até que seu antecessor tenha sido concluído com um desses resultados.

Os fluxos de controle executam fluxos de dados como uma tarefa. Em uma tarefa de fluxo de dados, os dados são extraídos de uma fonte, transformados ou carregados em um armazenamento de dados. A saída de uma tarefa de fluxo de dados pode ser a entrada para a próxima tarefa de fluxo de dados, e os fluxos de dados podem ser executados em paralelo. Ao contrário dos fluxos de controle, não é possível adicionar restrições entre tarefas em um fluxo de dados. No entanto, você pode adicionar um visualizador de dados para observar os dados à medida que são processados por cada tarefa.

Diagram of a data flow being executed as a task within a control flow.

No diagrama acima, há várias tarefas dentro do fluxo de controle, uma das quais é uma tarefa de fluxo de dados. Uma das tarefas é aninhada dentro de um contêiner. Os contentores podem ser utilizados para estruturar tarefas, fornecendo uma unidade de trabalho. Um desses exemplos é para repetir elementos dentro de uma coleção, como arquivos em uma pasta ou instruções de banco de dados.

Serviço do Azure relevante:

Outras ferramentas:

Opções de tecnologia

Contribuidores

Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.

Autor principal:

Próximos passos

As arquiteturas de referência a seguir mostram pipelines ELT de ponta a ponta no Azure: