Variáveis do Airflow

Introdução ao Apache Airflow em Python

Mike Metzger

Data Engineer

O que são variáveis?

  • Úteis para valores de configuração
  • Caminhos de arquivo, endpoints de API, ambientes etc.
  • Podem ser consultadas por tarefas, definidas via código, UI do Airflow ou via arquivo
  • Existem fora do código do Dag
Introdução ao Apache Airflow em Python

Acessando variáveis na UI do Airflow

  • Pelo menu Admin: Variables

UI do Airflow com o menu Admin aberto mostrando a opção Variables

Introdução ao Apache Airflow em Python

Visualizando variáveis na UI do Airflow

Página de Variáveis do Airflow com a lista vazia e nenhuma variável definida

Introdução ao Apache Airflow em Python

Adicionando uma variável no Airflow

Página de Variáveis do Airflow com o botão Add Variable destacado

Introdução ao Apache Airflow em Python

Editor de variáveis

Formulário do editor de variável do Airflow com campos de chave, valor e descrição

Introdução ao Apache Airflow em Python

Variáveis presentes na interface

Página de Variáveis do Airflow mostrando uma variável definida na lista

Introdução ao Apache Airflow em Python

Lendo uma variável em Python

  • Usa a biblioteca airflow.sdk.Variable
  • Ler com Variable.get("variable_name")
    # Recupera um valor de string simples
    my_region = Variable.get("region")
    
  • Nesse caso, my_region seria us-eastern
  • Forneça um valor padrão se a variável não existir
    # Forneça um valor padrão se a variável não existir
    env = Variable.get("current_environment", default=None)
    
  • Como não definimos current_environment, env é None
Introdução ao Apache Airflow em Python

Acessando variáveis em templates Jinja

  • Acessível via {{ var.value.variable_name }}
    filewatcher = FileSensor(
    task_id="wait_for_files",
    filepath="/data/{{ var.value.region }}/input.csv",
    ...
    
  • No nosso caso, o FileSensor procuraria o arquivo /data/us-eastern/input.csv
Introdução ao Apache Airflow em Python

Acessando variáveis pelo CLI

  • Variáveis podem ser lidas, atualizadas, excluídas ou listadas via linha de comando
  • Ler - airflow variables get <variable_name>
  • Gravar - airflow variables set <variable_name> <value>
  • Excluir - airflow variables delete <variable_name>
  • Listar - airflow variables list <variable_name>
Introdução ao Apache Airflow em Python

Variáveis JSON

  • Valores de variáveis podem ser strings JSON
    • Variable.get("variable_name", deserialize_json=True)
    • Retorna um dicionário Python
  • Usando Jinja
    • {{ var.json.variable_name }}
Introdução ao Apache Airflow em Python

Definindo variáveis

  • Também é possível definir variáveis
  • Usando Variable.set("variable_name", variable_value)
  • Também aceita JSON com a opção serialize_json=True
  • Use com moderação: pode afetar outros Dags de formas inesperadas
Introdução ao Apache Airflow em Python

Vamos praticar!

Introdução ao Apache Airflow em Python

Preparing Video For Download...