Slide 1

Slide 1 text

Orquestração de pipelines com Airflow e dbt TDC Future 2023

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

“Data is the new oil”

Slide 4

Slide 4 text

“Data-driven” análises

Slide 5

Slide 5 text

DataOps & Modern data stack

Slide 6

Slide 6 text

Um pouco de história 1980 2012 Redshift 2015 Airflow 2021 dbt Data Warehouse 1960 ETL 2006 AWS Standard SQL

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

● Entregar valor mais rapidamente ● Tornar os processos mais eficientes Por que DataOps?

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

● Estrutura escalável ● Manutenção simples ● Foco no desenvolvimento ● Mais governança dos dados Por que Modern Data Stack?

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

Modelando e transformando dados com dbt

Slide 14

Slide 14 text

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.

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

Estrutura de pastas e arquivos do dbt

Slide 18

Slide 18 text

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.

Slide 19

Slide 19 text

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.

Slide 20

Slide 20 text

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.

Slide 21

Slide 21 text

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.

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

Nosso primeiro modelo

Slide 24

Slide 24 text

Um modelo mais complexo

Slide 25

Slide 25 text

Definição do schema

Slide 26

Slide 26 text

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.

Slide 27

Slide 27 text

Orquestrando pipelines com Airflow

Slide 28

Slide 28 text

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.

Slide 29

Slide 29 text

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.

Slide 30

Slide 30 text

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.

Slide 31

Slide 31 text

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.

Slide 32

Slide 32 text

Nossa primeira DAG

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

Orquestrando o dbt com Airflow

Slide 35

Slide 35 text

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.

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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.

Slide 38

Slide 38 text

Instalando o Cosmos

Slide 39

Slide 39 text

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:

Slide 40

Slide 40 text

Criação da nossa DAG de dbt

Slide 41

Slide 41 text

Laboratório

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

No content

Slide 45

Slide 45 text

No content

Slide 46

Slide 46 text

No content

Slide 47

Slide 47 text

(Bônus: uma dag e modelo complexos)

Slide 48

Slide 48 text

(Bônus: uma dag e modelo complexos)

Slide 49

Slide 49 text

Dúvidas?

Slide 50

Slide 50 text

Obrigade! @1cadumagalhaes linkedin.com/in/1cadumagalhaes work.cadumagalhaes.dev blog.cadumagalhaes.dev dev.to/1cadumagalhaes