Сохранить результат оператора в Apache Airflow - PullRequest
0 голосов
/ 28 декабря 2018

Несколько операторов позволяют извлекать данные, но мне так и не удалось использовать результаты.

Например: https://github.com/apache/incubator-airflow/blob/master/airflow/contrib/operators/bigquery_get_data.py

Этот оператор можно вызвать следующим образом:

get_data = BigQueryGetDataOperator(
      task_id='get_data_from_bq',
      dataset_id='test_dataset',
      table_id='Transaction_partitions',
      max_results='100',
      selected_fields='DATE',
      bigquery_conn_id='airflow-service-account'
      )

Тем не менее, get_data относится к типу DAG, но в строке 116 указано "return table_data".Чтобы было понятно, оператор работает и извлекает данные, я просто не понимаю, как использовать извлечение данных / где они расположены.

Как мне получить данные, используя "get_data" выше?

Ответы [ 2 ]

0 голосов
/ 02 января 2019

То, как вы будете использовать get_data в следующей задаче, может быть PythonOperator, который затем можно использовать для обработки данных.

get_data = BigQueryGetDataOperator(
      task_id='get_data_from_bq',
      dataset_id='test_dataset',
      table_id='Transaction_partitions',
      max_results='100',
      selected_fields='DATE',
      bigquery_conn_id='airflow-service-account'
      )

def process_data_from_bq(**kwargs):
      ti = kwargs['ti']
      bq_data = ti.xcom_pull(task_ids='get_data_from_bq')
      # Now bq_data here would have your data in Python list
      print(bq_data)

process_data = PythonOperator(
      task_id='process_data_from_bq',
      python_callable=process_bq_data,
      provide_context=True
      )

get_data >> process_data

PS: я автор BigQueryGetDataOperator и коммиттер Airflow / PMC

0 голосов
/ 02 января 2019

Возвращаемое значение сохраняется в Xcom .Вы можете получить к нему доступ от другого оператора, как показано в этом примере.

data = ti.xcom_pull(task_ids='get_data_from_bq')
...