Python 오퍼레이터 - op_args로 변수 할당하기

우상욱·2024년 3월 23일

Airflow Master Class

목록 보기
12/24

op_args 사용법


  1. 함수에 일반 변수만 있을 경우
def regist(name, sex):
    print(f'이름은 {name}이고, 성별은 {sex}입니다')

python_task = PythonOperator(
   task_id='python_task'
   python_callable=regist,
   op_args=['wsw', 'man'] # 리스트로 작성
  1. 함수에 일반 변수 + *args도 있을 경우
def regist(name, sex, *args):
   print(name)
   print(sex)
   print(args)
   
python_task = PythonOperator(
   task_id = 'python_task',
   python_callable=regist,
   op_args=['wsw','man','kr','seoul']
  1. 함수에 *args 변수만 있을 경우
def regist(*args):
   print(args)

python_task = PythonOperator(
   task_id='python_task',
   python_callable=regist,
   op_args=['hjkim','man','kr','seoul']
)

실습


  • common/common_func
def regist(name, sex, *args):
    print(f"이름: {name}")
    print(f"성별: {sex}")
    print(f"기타 옵션들: {args}")
  • dags
from airflow import DAG
import datetime
import pendulum
from airflow.operators.python import PythonOperator
from common.common_func import regist
import random

with DAG(
    dag_id="dags_python_with_op_args",
    schedule="30 6 * * *",
    start_date=pendulum.datetime(2023, 3, 1, tz="Asia/Seoul"),
    catchup=False,
) as dag:

    regist_t1 = PythonOperator(
        task_id="regist_t1",
        python_callable=regist,
        op_args=["wsw", "man", "kr", "seoul"],
    )

    regist_t1

실행 결과를 보면 op_args에 선언된 파라미터들이, 첫번째, 두번째까지 name, sex에 각각 할당, 나머지 파라미터들은 튜플 형태로 저장되어있는 것을 알 수 있습니다.

profile
데이터엔지니어

0개의 댓글