如何使用 PostgresOperator 在气流中调用存储过程函数
How to Call stored procedure function in airflow using PostgresOperator
我不确定如何在气流运算符中调用存储过程-
例如。 存储过程是-调用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)
我不确定如何在气流运算符中调用存储过程-
例如。 存储过程是-调用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)