使用 Google Composer 进行 运行 Bigquery 查询

Using Google Composer to run Bigquery query

我是 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.Whosebug.posts_questions`
        ORDER BY view_count DESC
        LIMIT 100
        """,
        use_legacy_sql=False)     

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

BigQueryOperator一般用于在BigQuery中执行查询,然后将结果加载到另一个BigQuerytable(转换操作)。我假设您正在尝试从 BigQuery public table select 3 列加载到另一个 table。所以在 BigQueryOperator.

中提供 destination_dataset_table

请注意以下事项:

  1. Whosebug.posts_questionstable非常大,即使使用LIMIT也会扫描整个table。所以要注意成本。
  2. 使用 sql 参数代替 bql,因为它已不再使用。