用气流创建一个 dag

时间:2021-07-16 10:31:23

标签: python pandas airflow

我想创建一个每小时运行一次的 dag,我们有一个 cleanData 进程来导入和清理文件,然后是一个 storedata 进程,它每天早上 8 点向我们发送两次报告,然后下午 6 点。 如何在 dag 中包含时间?

import pandas as pd
import numpy as np

from airflow import DAG
from datetime import datetime
from airflow.operators.python_operator import PythonOperator


default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'start_date': datetime(2020, 12, 5),
    'retries': 1
}


def storeData(**context):
    df= context['task_instance'].xcom_pull(task_ids='clean_Data')
    print (df)


def cleanData(**context):
    data = {'Name': ['Tom', 'nick', 'krish', 'jack'],
            'Age': [np.nan, 21, np.nan, 18]}
    df = pd.DataFrame(data)
    df = df.fillna(0)
    return df


dag = DAG(
    'CleaningPipelineDAG',
    default_args=default_args,
    description='Cleaning Data',
    schedule_interval='@once',
)


t1 = PythonOperator(
    task_id='clean_Data',
    provide_context=True,
    python_callable=cleanData,
    dag=dag,
)

t2 = PythonOperator(
    task_id='store_data',
    provide_context=True,
    python_callable=storeData,
    dag=dag,
)

t1 >> t2

1 个答案:

答案 0 :(得分:0)

如果整个 DAG 可以每天运行两次(每个任务相同的调度,没有跳过),那么您可以使用以下schedule_interval

dag = DAG(
    'CleaningPipelineDAG',
    default_args=default_args,
    description='Cleaning Data',
    schedule_interval='0 8,18 * * *',
)