Artikel

Konten contoh

Menjadwalkan Pipeline dengan Apache Airflow

Atur dependensi dan percobaan ulang terbatas sambil menjaga publikasi batch aman untuk diulang.

Penulis: alfianh.id (identitas pratinjau)Menengah2 menit bacaTerbit:

Konten, data, dan tanggal ini merupakan contoh untuk pratinjau situs.

English

Ikuti artikel melalui RSS

Ukuran teks bacaan18px

Buka simpanan / perbaiki data

Simpanan dan ukuran teks hanya untuk browser ini. Tidak ada sinkronisasi antarperangkat.

DAG Airflow menjalankan ekstraksi sebelum pemeriksaan dan publikasi
DAG Airflow menjalankan ekstraksi sebelum pemeriksaan dan publikasi
Daftar isi

Ini artikel contoh untuk pembelajaran. Tanggal publikasi dan catatan transaksi bersifat ilustratif.

Scheduler mengatur waktu mulai dan tugas yang harus selesai lebih dahulu. Scheduler tidak menentukan apakah penulisan ulang aman. Contoh Airflow 3.1.6 ini memakai antarmuka publik airflow.sdk untuk menunjukkan urutan dependensi dengan data kecil di memori.

Tetapkan dependensi batch

from datetime import datetime, timedelta, timezone
from airflow.sdk import DAG, task

with DAG(
    dag_id='sample_transaction_check',
    start_date=datetime(2026, 1, 1, tzinfo=timezone.utc),
    schedule='@daily',
    catchup=False,
    default_args={'retries': 2,
                  'retry_delay': timedelta(minutes=2)},
) as dag:
    @task
    def extract():
        return [{'transaction_id': 'T-10', 'amount': '12.50'}]

    @task
    def check(rows):
        if any(not row['transaction_id'] for row in rows):
            raise ValueError('Missing transaction identifier')
        return len(rows)

    @task
    def publish(row_count):
        print(f'Validated sample rows: {row_count}')

    publish(check(extract()))

Nilai keluaran tugas membentuk dependensi: check menunggu extract dan publish menunggu check. Contoh hanya mencetak jumlah baris. Pada pipeline nyata, publikasi mempromosikan batch tervalidasi atau melakukan upsert ke tujuan. Penulisan itu harus tahan percobaan ulang tanpa menambah duplikat.

Pahami interval dan percobaan ulang

Pada Airflow 3.1.6, jadwal cron seperti @daily memakai trigger timetable secara default karena create_cron_data_intervals bernilai False. Jangan menganggap contoh otomatis mewakili batch hari sebelumnya. Timetable berbasis interval data menjadwalkan run setelah intervalnya selesai. Pilih timetable tersebut atau jendela batch tetap yang eksplisit jika sumber membutuhkan input harian terbatas.

start_date adalah batas penjadwalan, bukan perintah agar tugas langsung berjalan pada waktu tersebut. Pilih catatan sumber memakai jendela tetap yang disepakati. Waktu saat ini dapat menghasilkan data berbeda pada percobaan ulang.

retries=2 mengizinkan dua percobaan ulang setelah upaya pertama gagal. Timeout jaringan mungkin pulih sendiri; pelanggaran skema biasanya memerlukan perbaikan sumber. Catat identifier batch dan penyebab agar operator bisa membedakannya. Jangan mengubah kegagalan validasi menjadi batch kosong yang dilaporkan berhasil.

catchup=False mencegah scheduler otomatis membuat semua interval historis ketika DAG diaktifkan. Pengaturan itu tidak memperbaiki data masa lalu yang hilang. Rencanakan backfill eksplisit dengan interval yang diperiksa bila pemulihan membutuhkannya.

Batasi ukuran pesan tugas

List keluaran dikirim melalui mekanisme pesan tugas Airflow dan hanya sesuai untuk demonstrasi ini. Untuk data nyata, kirim lokasi penyimpanan tahan gagal beserta metadata batch. Simpan kredensial pada sistem connection atau secret deployment, bukan di sumber DAG. Uji penjadwalan, import, dan tujuan pada instalasi Airflow Anda sebelum mengaktifkan penulisan.

Referensi