Airflow 변수

Python으로 배우는 Apache Airflow 입문

Mike Metzger

Data Engineer

변수란?

  • 설정 값 저장에 유용
  • 파일 경로, API 엔드포인트, 환경 등
  • 태스크, 코드, Airflow UI, 파일을 통해 조회 및 설정 가능
  • DAG 코드 외부에 존재
Python으로 배우는 Apache Airflow 입문

Airflow UI에서 변수 접근

  • 관리자: 변수 메뉴를 통해 접근

Variables 옵션이 표시된 Admin 메뉴가 열린 Airflow UI

Python으로 배우는 Apache Airflow 입문

Airflow UI에서 변수 보기

변수가 정의되지 않아 목록이 비어 있는 Airflow 변수 페이지

Python으로 배우는 Apache Airflow 입문

Airflow에서 변수 추가

변수 추가 버튼이 강조 표시된 Airflow 변수 페이지

Python으로 배우는 Apache Airflow 입문

변수 편집기

키, 값, 설명 필드가 있는 Airflow 변수 편집기 양식

Python으로 배우는 Apache Airflow 입문

UI에 표시된 변수

목록에 정의된 변수 하나가 표시된 Airflow 변수 페이지

Python으로 배우는 Apache Airflow 입문

Python에서 변수 읽기

  • airflow.sdk.Variable 라이브러리 사용
  • Variable.get("variable_name")으로 읽기
    # Retrieve a plain string value
    my_region = Variable.get("region")
    
  • 이 경우 my_region은 us-eastern
  • 변수가 없을 때 기본값 지정 가능
    # Provide a fallback if the variable doesn't exist
    env = Variable.get("current_environment", default=None)
    
  • current_environment가 정의되지 않았으므로 env는 None
Python으로 배우는 Apache Airflow 입문

Jinja 템플릿에서 변수 접근

  • {{ var.value.variable_name }}으로 접근
    filewatcher = FileSensor(
    task_id="wait_for_files",
    filepath="/data/{{ var.value.region }}/input.csv",
    ...
    
  • 이 경우 FileSensor는 /data/us-eastern/input.csv 파일을 탐색
Python으로 배우는 Apache Airflow 입문

CLI에서 변수 접근

  • 명령줄에서 변수 읽기, 수정, 삭제, 목록 조회 가능
  • 읽기 - airflow variables get <variable_name>
  • 쓰기 - airflow variables set <variable_name> <value>
  • 삭제 - airflow variables delete <variable_name>
  • 목록 - airflow variables list <variable_name>
Python으로 배우는 Apache Airflow 입문

JSON 변수

  • 변수 값을 JSON 문자열로 저장 가능
    • Variable.get("variable_name", deserialize_json=True)
    • Python 딕셔너리로 반환
  • Jinja 사용 시
    • {{ var.json.variable_name }}
Python으로 배우는 Apache Airflow 입문

변수 설정

  • 변수 설정도 가능
  • Variable.set("variable_name", variable_value) 사용
  • serialize_json=True 옵션으로 JSON 저장 가능
  • 다른 DAG에 예기치 않은 영향을 줄 수 있으므로 신중하게 사용
Python으로 배우는 Apache Airflow 입문

연습해 봅시다!

Python으로 배우는 Apache Airflow 입문

Preparing Video For Download...