Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Orquestração de Pipelines com DBT e Airflow

Orquestração de Pipelines com DBT e Airflow

Esta apresentação leva você em uma jornada desde a história da Engenharia de Dados até a era do DataOps, delineando as necessidades que impulsionaram a ascensão das ferramentas modernas da stack de dados, como dbt e Airflow. Explore os fundamentos do Airflow e do dbt, desvendando como essas ferramentas se encaixam para criar pipelines de dados modernos.

Descubra como orquestrar pipelines eficientes e flexíveis, alinhando o poder do dbt para transformação de dados e o Airflow para a orquestração robusta. Esta apresentação oferece uma visão rápida e prática de como implementar uma pipeline de dados moderna, aproveitando ao máximo as funcionalidades dessas ferramentas essenciais da moderna engenharia de dados.

Cadu Magalhães

January 31, 2024
Tweet

More Decks by Cadu Magalhães

Other Decks in Technology

Transcript

  1. Quem é esse? • 26 anos • 4 anos de

    engenharia de dados • Google Cloud certified • Dono de gatos • Nerd e músico frustrado • Especialista em gambiarras • Participante de eventos e caçador de brindes Cadu Magalhães @1cadumagalhaes blog.cadumagalhaes.dev datacareer.guide
  2. Um pouco de história 1980 2012 Redshift 2015 Airflow 2021

    dbt Data Warehouse 1960 ETL 2006 AWS Standard SQL
  3. O que é DataOps? “DataOps é uma metodologia que combina

    práticas de Agile, DevOps e Lean Manufacturing para melhorar a velocidade, a qualidade e a confiabilidade do processo de análise de dados. ” - Chat GPT
  4. O que é Modern Data Stack? “A modern data stack

    é uma abordagem de arquitetura de dados composta por um conjunto de ferramentas e tecnologias integradas, que permitem às empresas coletar, armazenar, processar e analisar dados de forma ágil e escalável, facilitando a tomada de decisões baseadas em dados.” - Chat GPT
  5. • Estrutura escalável • Manutenção simples • Foco no desenvolvimento

    • Mais governança dos dados Por que Modern Data Stack?
  6. Uma pipeline de dados 06 Visualização 03 Transformação 04 Orquestração

    05 Monitoramento Qualidade 02 Armazenamento e processamento 01 Ingestão
  7. Uma pipeline de dados 06 Visualização 03 Transformação 04 Orquestração

    05 Monitoramento Qualidade 02 Armazenamento e processamento 01 Ingestão 03 Transformação 04 Orquestração
  8. Introdução ao dbt “dbt™ é uma ferramenta de fluxo de

    trabalho de transformação SQL-first que permite que as equipes implantem código analítico de forma rápida e colaborativa seguindo as práticas recomendadas de engenharia de software, como modularidade, portabilidade, CI/CD e documentação.” - dbt Uma ferramenta de modelagem e transformação de dados. Foi criado em 2021, e seu core é open-source.
  9. Introdução ao dbt • Construção de modelos ◦ Código ◦

    Documentação ◦ Testes • Mapeamento dinâmico de dependências • Reutilização de código • Utilização de ferramentas de versionamento e CI/CD
  10. Começando com o dbt Vamos usar o dbt-core, o pacote

    de código aberto Basta instalar (a forma recomendada é via pip) e inicializar o seu projeto. Isso vai criar algumas pastas e arquivos, incluindo o dbt_project.yml, que é o arquivo principal de configuração do seu projeto. Para usar local, você precisa configurar a conexão com o seu banco de dados. Como vamos usar no airflow, vou pular este passo. https://docs.getdbt.com/docs/core/connect-data-platform/connection-profiles
  11. Estrutura de pastas e arquivos do dbt Dentro da pasta

    models nós escrevemos nossos modelos e transformações. As outras pastas tem outros objetivos, então vamos focar aqui por enquanto. Nesse diretório, qualquer arquivo .sql que você criar vai ser considerado um modelo. Você também pode criar pastas e subpastas para fazer a organização que achar melhor.
  12. Organização de modelos do dbt A estrutura recomendada pelo próprio

    dbt é a seguinte: 1. Staging: criando nossos átomos, nossos blocos de construção modulares iniciais, a partir de dados de origem 2. Intermediate: empilhar camadas de lógica com propósitos claros e específicos, preparar nossos modelos de teste 3. Marts: reunindo nossas peças modulares em uma visão ampla e rica das entidades com as quais nossa organização se preocupa 4. Sources*: pode ser utilizado para que possamos usar as fontes de forma dinâmica, assim como o restante dos modelos.
  13. Definindo os modelos do dbt Dentro desse diretório, podemos definir:

    1. Modelos: são arquivos SQL (ou python) com a lógica da transformação, que vão ser executados e gerar os resultados no seu banco de dados 2. Schemas: são arquivos yaml que definem as propriedades dos modelos, incluindo o nome da tabela, o nome das colunas e o tipo de cada uma, além de poder definir testes simples. 3. Documentação: são arquivos Markdown que vão ser renderizados como documentação adicional no seu projeto.
  14. Configuração dos modelos do dbt Também precisamos escrever configurações sobre

    os nossos modelos, onde podemos definir o tipo de materialização*, definir tags, descrição, etc. Isso pode ser feito: • no arquivo dbt_project.yml • nos arquivos .yaml de cada modelo • ou ainda num bloco de configuração no início de cada modelo.
  15. Materialização de modelos do dbt Materializações são as estratégias para

    persistir os modelos dentro do seu warehouse. O dbt tem 5 tipos de materialização: • tabela • view • incremental • ephemeral • view materializada
  16. O projeto de exemplo Esse projeto foi criado pelo próprio

    dbt para demonstrar sua funcionalidade. Nós vamos configurar a execução para que ele possa ser orquestrado via Airflow.
  17. Introdução ao Airflow “Apache Airflow™ é uma plataforma de código

    aberto para desenvolvimento, agendamento e monitoramento de fluxos de trabalho orientados em lote.” - Airflow Uma ferramenta de orquestração de qualquer tipo de pipeline. Foi criado em 2015 pela Airbnb, e hoje faz parte da Apache Foundation.
  18. Introdução ao Airflow • Construção de pipelines como código (em

    python) ◦ Pipelines geradas dinamicamente ◦ Ambiente extensível ◦ Bastante flexível • Pacotes de conexão com os principais serviços e ferramentas do mercado. • Orquestração de pipelines em batch, não foi feito para utilização com dados em tempo real.
  19. Primeiros passos com o Airflow Para instalar o airflow, você

    pode usar o pacote de python e fazer toda a configuração. A Astronomer também disponibiliza o Astro CLI, que permite a configuração do airflow com um único comando. Acredito que a melhor forma de fazer o deploy local é utilizando o docker compose. A documentação oficial provê um arquivo de configuração do docker compose com todas as informações necessárias para utilização.
  20. Conceitos fundamentais • DAG: Directed Acyclic Graphs, que são os

    workflows que vamos orquestrar. • DAG run: é uma execução de um DAG, que pode ser manual ou agendada. • Task: são as tarefas que compõem um DAG, e que são executadas em uma DAG run. • Task instance: é uma execução de uma task em uma DAG run. • Operadores: são classes que representam uma task, e que podem ser instanciadas para criar uma task instance. • Sensors: são classes que representam uma task que espera por um evento, e que podem ser instanciadas para criar uma task instance. • Provedores: são os pacotes mantidos pela comunidade e que contém os operadores, sensores e mais.
  21. Configurações da DAG • dag_id: o nome da DAG •

    schedule_interval: a frequência de execução da DAG. Pode ser CRON ou uma macro como `@daily` • schedule: para agendamento dinâmico com base em datasets • start_date: a data de início da DAG • end_date: a data de fim da DAG • catchup: se a DAG deve executar as DAG runs que não foram executadas enquanto ela estava desligada • tags: tags que podem ser usadas para filtrar as DAGs • fail_stop: se a DAG deve parar de executar caso uma task falhe (Airflow 2.7+) • default_args: argumentos padrão que podem ser usados nas tasks
  22. Introdução ao Cosmos A principio, o airflow não tem suporte

    nativo ao dbt core. Nos últimos anos a recomendação para sua execução tem sido criar um BashOperator e executar o comando dbt run. Para usuários do dbt cloud, existem operadores oficiais que podem ser usados. No começo de 2023 a Astronomer lançou o Cosmos, que permite que você transforme o seu projeto de dbt em DAGs e Task Groups.
  23. Introdução ao Cosmos • Gerar tasks para cada um dos

    modelos e testes • Monitoramento granular da pipeline • Utilização de conexões do airflow para execução das transformações
  24. Instalando o Cosmos Para conseguir utilizar, precisamos instalar o pacote

    astronomer-cosmos no ambiente em que nosso Airflow vai ser executado. Para isso, podemos personalizar a imagem docker do nosso container e acrescentar uma etapa de instalação de pacotes.
  25. Configuração do Cosmos Precisamos fazer algumas configurações passando o caminho

    do nosso projeto, o nome da conexão utilizada para conectar com o banco de dados, e o nome do profile que vamos usar: