Biến trong Airflow

Giới thiệu về Apache Airflow bằng Python

Mike Metzger

Data Engineer

Biến là gì?

  • Hữu ích cho giá trị cấu hình
  • Đường dẫn tệp, endpoint API, môi trường, v.v.
  • Có thể truy vấn từ task, đặt qua mã, giao diện Airflow, hoặc qua tệp
  • Tồn tại ngoài mã Dag
Giới thiệu về Apache Airflow bằng Python

Truy cập biến trong giao diện Airflow

  • Qua menu Admin: Variables

Giao diện Airflow với menu Admin mở, hiển thị tùy chọn Variables

Giới thiệu về Apache Airflow bằng Python

Xem biến trong giao diện Airflow

Trang Airflow Variables với danh sách rỗng, chưa có biến

Giới thiệu về Apache Airflow bằng Python

Thêm biến trong Airflow

Trang Airflow Variables với nút Add Variable được làm nổi bật

Giới thiệu về Apache Airflow bằng Python

Trình chỉnh sửa biến

Biểu mẫu chỉnh sửa biến Airflow với các trường key, value, và description

Giới thiệu về Apache Airflow bằng Python

Biến có trong giao diện

Trang Airflow Variables hiển thị một biến trong danh sách

Giới thiệu về Apache Airflow bằng Python

Đọc biến trong Python

  • Dùng thư viện airflow.sdk.Variable
  • Đọc bằng Variable.get("variable_name")
    # Lấy giá trị chuỗi đơn giản
    my_region = Variable.get("region")
    
  • Ở đây, my_region sẽ là us-eastern
  • Cung cấp giá trị dự phòng nếu biến không tồn tại
    # Cung cấp mặc định khi biến không tồn tại
    env = Variable.get("current_environment", default=None)
    
  • Vì chưa định nghĩa current_environment, env là None
Giới thiệu về Apache Airflow bằng Python

Truy cập biến trong mẫu Jinja

  • Truy cập qua {{ var.value.variable_name }}
    filewatcher = FileSensor(
    task_id="wait_for_files",
    filepath="/data/{{ var.value.region }}/input.csv",
    ...
    
  • Với ví dụ này, FileSensor sẽ tìm tệp tại /data/us-eastern/input.csv
Giới thiệu về Apache Airflow bằng Python

Truy cập biến qua CLI

  • Có thể đọc, cập nhật, xóa hoặc liệt kê biến qua dòng lệnh
  • Đọc - airflow variables get <variable_name>
  • Ghi - airflow variables set <variable_name> <value>
  • Xóa - airflow variables delete <variable_name>
  • Liệt kê - airflow variables list <variable_name>
Giới thiệu về Apache Airflow bằng Python

Biến JSON

  • Giá trị biến có thể là chuỗi JSON
    • Variable.get("variable_name", deserialize_json=True)
    • Trả về một dict Python
  • Dùng Jinja
    • {{ var.json.variable_name }}
Giới thiệu về Apache Airflow bằng Python

Đặt biến

  • Cũng có thể đặt biến
  • Dùng Variable.set("variable_name", variable_value)
  • Có thể lưu JSON với tùy chọn serialize_json=True
  • Hạn chế sử dụng vì có thể ảnh hưởng ngoài ý muốn tới các Dag khác đang dùng biến
Giới thiệu về Apache Airflow bằng Python

Ayo berlatih!

Giới thiệu về Apache Airflow bằng Python

Preparing Video For Download...