Passing parameter
Bogor, 03 Desember 2025, not feeling well, but learn is a must
XComs atau dibaca Cross Communication adalah sebuah mekanisme yang digunakan untuk setiap task saling bertukar data. Pada dasarnya task terisoloasi dan mungkin berjalan dari mesin yang berbeda.
Untuk memanggil data melalui mekanisme tersebut kita harus membuat spesifikias dari mana data tersebut diambil, ada 3 parameter yang dapat kita gunakan untuk mengambil data dari task lain;
keytask iddag idjika mengambil dari DAG lain.
Data yang dikirimkan dapat berupa data tunggal atau ganda, dimana data tersebut bisa bermaca-macam, namun mekanisme tersebut hanya digunakan untuk data dengan besaran yang relative kecil. Maksimal besaran data adalah sebanyak 48kb.
python operator DAG
from airflow import DAG # Import DAG
from datetime import datetime, timedelta
from airflow.sdk import dag, task, chain
default_args = {
'owner' : 'code_farras',
'retries' : '5',
'retry_delay' : timedelta(minutes=5)
}
@dag(
dag_id="XCOM_with_DAG_API",
description='Learn to create Directed Acyclic Graph python',
start_date=datetime(2025,10,19), #this part decide when is the DAG run for the 1st time
schedule= '@daily', # bisa juga menggunakan ekspresi CRON,
default_args=default_args # Banyak macamnya liat catatan
)
def dag_passing_parameter_v1():
@task(do_xcom_push=True, multiple_outputs=True)
def get_name(**context):
return {'first_name':'Muhammad Farras',
'last_name':'Ma''ruf'}
@task(do_xcom_push=True, multiple_outputs=True)
def get_age():
return {'age':'29'}
@task
def script_pertama():
print("Bismillah")
@task(task_id="greeting")
def script_nama(**context):
print(context)
data_age = context['ti'].xcom_pull(task_ids="get_age",key="age")
print(f"Data age: {data_age}")
# print(f"Data name: {data_name}")
# Build dependency flow
first = script_pertama()
greet = script_nama()
chain(
first,
[get_age(),get_name()] ,
greet
)
dag_passing_parameter_v1()
Directed Acylic Graph of above code

Kita dapat meliat data yang dikirim dari setiap task masing-masing
XCOM for each Task
