Airflow 将.bat文件中的代码放入Dag文件

Airflow 将.bat文件中的代码放入Dag文件,airflow,scheduler,directed-acyclic-graphs,Airflow,Scheduler,Directed Acyclic Graphs,我是BI新手,我需要一些帮助我正在使用windows Jobscheduler来执行任务,但有时它会出现错误,所以我要转到apache airflow,我已经有一个执行的bat文件,但我想在apache airflow DAG中使用它,这是我的文件bat代码 cd/d d d:\EXMOOV\Scripts 调用RunDTS.bat EXMOOV Js_002_MOOV_AIR 我想把它放在一个dag文件代码中以执行它,所以我举了一个dag代码的例子,并尝试将它放在一个无法读取的文件中,而apa

我是BI新手,我需要一些帮助我正在使用windows Jobscheduler来执行任务,但有时它会出现错误,所以我要转到apache airflow,我已经有一个执行的bat文件,但我想在apache airflow DAG中使用它,这是我的文件bat代码

cd/d d d:\EXMOOV\Scripts

调用RunDTS.bat EXMOOV Js_002_MOOV_AIR

我想把它放在一个dag文件代码中以执行它,所以我举了一个dag代码的例子,并尝试将它放在一个无法读取的文件中,而apache不读取它,这是我的尝试:

from datetime import timedelta

from airflow import DAG

from airflow.operators.bash_operator import BashOperator
from airflow.utils.dates import days_ago


default_args = {
    'owner': 'Brahim',
    'depends_on_past': False,
    'start_date': days_ago(2),
    'email': ['airflow@example.com'],
    'email_on_failure': False,
    'email_on_retry': False,
    'retries': 1,
    'retry_delay': timedelta(minutes=2),

}
dag = DAG(
    'My_first_test_code',
    default_args=default_args,
    description='A simple tutorial DAG',
    schedule_interval=timedelta(days=1),
)


t1 = BashOperator(
    task_id='print_date',
    bash_command='date',
    dag=dag,
)

cd /d D:\EXMOOV\Scripts


call RunDTS.bat EXMOOV Js_002_MOOV_AIR


    t2 = BashOperator(
        task_id='sleep',
        depends_on_past=False,
        bash_command='sleep 5',
        retries=3,
        dag=dag,
    )
    dag.doc_md = __doc__

t1.doc_md = """\

templated_command = """
{% for i in range(5) %}
    echo "{{ ds }}"
    echo "{{ macros.ds_add(ds, 7)}}"
    echo "{{ params.my_param }}"
{% endfor %}
"""

t3 = BashOperator(
    task_id='templated',
    depends_on_past=False,
    bash_command=templated_command,
    params={'my_param': 'Parameter I passed in'},
    dag=dag,
)

t1 >> [t2, t3]

我只想让那些读取这两行的dag文件来执行脚本——文件格式为.bat,用于在IBMDataStage中执行etl作业

您没有提到您的体系结构。然而,您的Airflow似乎安装在Linux机器上,或者安装在Linux的Windows子系统上。无论哪种方式,我认为您都可以使用Python library for Windows Remote Management(pywinrm),它应该允许您访问Windows服务器上的资源。此外,在python脚本上运行windows命令的语法不正确。看看这个。!
您没有提到您的体系结构。然而,您的Airflow似乎安装在Linux机器上,或者安装在Linux的Windows子系统上。无论哪种方式,我认为您都可以使用Python library for Windows Remote Management(pywinrm),它应该允许您访问Windows服务器上的资源。此外,在python脚本上运行windows命令的语法不正确。看看这个。!