Как передать результат первого запроса второму с помощью 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.

Я не хочу использовать темпоральную таблицу, так как считаю, что для этого небольшого объема мне это не нужно.

Буду признателен за вашу помощь.

0 ответов

Другие вопросы по тегам