我不确定如何在airflow操作符中调用存储过程-例如存储过程是-调用goal.dba.sp_ctrl_calendar()
我的代码-
from airflow.operators.postgres_operator import PostgresOperator
sp_ctrl_calendar = PostgresOperator(
task_id = 'sp_ctrl_calendar',
sql = 'goal.dba.sp_ctrl_calendar(); end;',
postgres_conn_id = 'redshift',
autocommit = True)
这种方法正确吗?
在postgresql(或redshift(中调用proc,命令为call procname
所以你的sql命令应该是这样的:
from airflow.operators.postgres_operator import PostgresOperator
sp_ctrl_calendar = PostgresOperator(
task_id = 'sp_ctrl_calendar',
sql = 'call goal.dba.sp_ctrl_calendar',
postgres_conn_id = 'redshift',
autocommit = True)
正确答案是-
sql_command_1 = 'call goal.dba.sp_ctrl_calendar()'
sp_ctrl_calendar = PostgresOperator(
task_id = 'sp_ctrl_calendar',
sql = sql_command_1,
postgres_conn_id = 'redshift',
autocommit = True)