使用Google Composer运行Bigquery查询



我是Google composer和Apache airflow的新手。

我正试图通过创建一个DAG来查询Bigquery。

import datetime
import airflow
from airflow.operators import bash_operator

from airflow.contrib.operators import bigquery_operator

YESTERDAY = datetime.datetime.now() - datetime.timedelta(days=1)
default_args = {
'owner': 'me',
'depends_on_past': False,
'email': [''],
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': datetime.timedelta(minutes=5),
'start_date': YESTERDAY,
}
with airflow.DAG(
'composer_test_dag',
'catchup=False',
default_args=default_args,
schedule_interval=datetime.timedelta(days=1)) as dag:
bq_recent_questions_query = bigquery_operator.BigQueryOperator(
task_id='bq_weather_query',
bql="""
SELECT owner_display_name, title, view_count
FROM `bigquery-public-data.stackoverflow.posts_questions`
ORDER BY view_count DESC
LIMIT 100
""",
use_legacy_sql=False)     

这是正确的方法吗?如何从中获取查询结果?

BigQueryOperator通常用于在BigQuery中执行查询,然后将结果加载到另一个BigQuery表中(转换操作(。我假设您正试图从BigQuery公共表中选择3列并加载到另一个表中。因此在BigQueryOperator中提供destination_dataset_table

请注意以下内容:

  1. stackoverflow.posts_questions表非常大,即使使用LIMIT,它仍然会扫描整个表。所以要注意成本
  2. 使用sql参数而不是bql,因为它不再使用

最新更新