我想创建一个每小时运行一次的 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
答案 0 :(得分:0)
如果整个 DAG 可以每天运行两次(每个任务相同的调度,没有跳过),那么您可以使用以下schedule_interval
:
dag = DAG(
'CleaningPipelineDAG',
default_args=default_args,
description='Cleaning Data',
schedule_interval='0 8,18 * * *',
)