Самый простой ответ заключается в том, что xcom_push
не является ни одним из параметров в BigQueryOperator
, ни BaseOperator
, ни LoggingMixin.
BigQueryGetDataOperator
возвращает (и, следовательно, выдвигает) некоторые данные, но работает по имени таблицы и столбца.Вы можете связать это поведение, выполнив запрос, который вы выводите в таблицу с уникальным именем (возможно, используйте {{ds_nodash}}
в имени), а затем использовать таблицу в качестве источника для этого оператора, и затем вы можетеветвь с BranchPythonOperator
.
Вместо этого вы можете попробовать использовать BigQueryHook
get_conn().cursor()
для запуска запроса и работы с некоторыми данными внутри BranchPythonOperator
.
В другом месте мы болтали и придумали что-то вроде этого для вставки вызываемого BranchPythonOperator
:
cursor = BigQueryHook(bigquery_conn_id='connection_name').get_conn().cursor()
# one of these two:
cursor.execute(SQL_QUERY) # if non-legacy
cursor.job_id = cursor.run_query(bql=SQL_QUERY, use_legacy_sql=False) # if legacy
result=cursor.fetchone()
return "task_one" if result[0] is 1400 else "task_two" # depends on results format