Airflow Variables

Pengantar Apache Airflow dengan Python

Mike Metzger

Data Engineer

Apa itu variabel?

  • Berguna untuk nilai konfigurasi
  • Path file, endpoint API, environment, dll.
  • Dapat diambil dari task, diatur lewat kode, Airflow UI, atau lewat file
  • Ada di luar kode Dag
Pengantar Apache Airflow dengan Python

Mengakses variabel di Airflow UI

  • Melalui menu Admin: Variables

Airflow UI dengan menu Admin terbuka menampilkan opsi Variables

Pengantar Apache Airflow dengan Python

Melihat variabel di Airflow UI

Halaman Airflow Variables dengan daftar kosong dan tanpa variabel

Pengantar Apache Airflow dengan Python

Menambahkan variabel di Airflow

Halaman Airflow Variables dengan tombol Add Variable disorot

Pengantar Apache Airflow dengan Python

Editor variabel

Form editor variabel Airflow dengan kolom key, value, dan description

Pengantar Apache Airflow dengan Python

Variabel di UI

Halaman Airflow Variables menampilkan satu variabel dalam daftar

Pengantar Apache Airflow dengan Python

Membaca variabel di Python

  • Menggunakan pustaka airflow.sdk.Variable
  • Baca lewat Variable.get("variable_name")
    # Retrieve a plain string value
    my_region = Variable.get("region")
    
  • Dalam kasus ini, my_region bernilai us-eastern
  • Sediakan nilai cadangan jika variabel tidak ada
    # Provide a fallback if the variable doesn't exist
    env = Variable.get("current_environment", default=None)
    
  • Karena kita belum mendefinisikan current_environment, env adalah None
Pengantar Apache Airflow dengan Python

Mengakses variabel di template Jinja

  • Dapat diakses via {{ var.value.variable_name }}
    filewatcher = FileSensor(
    task_id="wait_for_files",
    filepath="/data/{{ var.value.region }}/input.csv",
    ...
    
  • Pada kasus kita, FileSensor akan mencari berkas /data/us-eastern/input.csv
Pengantar Apache Airflow dengan Python

Mengakses variabel lewat CLI

  • Variabel dapat dibaca, diubah, dihapus, atau didaftar via command-line
  • Baca - airflow variables get <variable_name>
  • Tulis - airflow variables set <variable_name> <value>
  • Hapus - airflow variables delete <variable_name>
  • Daftar - airflow variables list <variable_name>
Pengantar Apache Airflow dengan Python

Variabel JSON

  • Nilai variabel dapat berupa string JSON
    • Variable.get("variable_name", deserialize_json=True)
    • Mengembalikan dictionary Python
  • Menggunakan Jinja
    • {{ var.json.variable_name }}
Pengantar Apache Airflow dengan Python

Menyetel variabel

  • Variabel juga bisa di-set
  • Gunakan Variable.set("variable_name", variable_value)
  • Bisa menyimpan JSON dengan opsi serialize_json=True
  • Gunakan seperlunya karena dapat memengaruhi Dag lain yang mengakses variabel
Pengantar Apache Airflow dengan Python

Ayo berlatih!

Pengantar Apache Airflow dengan Python

Preparing Video For Download...