Как передать результат первого запроса второму с помощью PostgresOperator в airflow 2.x?
Я должен передать результат моего первого запроса на красное смещение второму. Я использую оператор postgres, скрипт Postgre. не имеет функции возврата, как вы видите в этой ссылке
На самом деле я подумал изменить скрипт и добавить возврат к методу выполнения. Но дело в том, что я не использую метод execute, а для выполнения сценария sql я использую это:
retrieve_latest_query_task = PostgresOperator(
sql='rs_warm-up_query-id.sql',
postgres_conn_id='redshift',
task_id='retrieve_latest_query_ids_from_metadata'
)
Вот два моих вопроса:
SELECT query
FROM (SELECT query,
querytxt,
ROW_NUMBER() OVER (PARTITION BY querytxt ORDER BY query ASC) AS num
FROM stl_query
WHERE userid = 102
AND starttime >= CURRENT_DATE - 2 + INTERVAL '7 hour'
AND starttime < CURRENT_DATE - 2 + INTERVAL '11 hour'
AND UPPER(querytxt) LIKE 'SELECT %'
ORDER BY query)
WHERE num = 1;
и с полученными данными (которые являются списком) я должен передать их второму скрипту:
SELECT LISTAGG(CASE WHEN LEN (RTRIM(TEXT)) = 0 THEN TEXT ELSE RTRIM(TEXT) END,'') within group(ORDER BY SEQUENCE) AS TEXT
FROM stl_querytext
WHERE query = {};
Я подумал, что использование xcom может быть хорошим решением, так как я не возвращаю много строк. Но я не знаю, как его использовать с Postgres.
Я не хочу использовать темпоральную таблицу, так как считаю, что для этого небольшого объема мне это не нужно.
Буду признателен за вашу помощь.