使用 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
请注意以下事项:
- Whosebug.posts_questionstable非常大,即使使用LIMIT也会扫描整个table。所以要注意成本。
- 使用
sql
参数代替 bql
,因为它已不再使用。
我是 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
请注意以下事项:
- Whosebug.posts_questionstable非常大,即使使用LIMIT也会扫描整个table。所以要注意成本。
- 使用
sql
参数代替bql
,因为它已不再使用。