Использование Google Composer для запуска запроса Bigquery - PullRequest
0 голосов
/ 26 февраля 2020

Я новичок в Google composer и Apache airflow.

Я пытаюсь запросить Bigquery, создав DAG.

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)     

Это правильный путь? Как я могу получить результаты запроса от этого?

1 Ответ

1 голос
/ 26 февраля 2020

BigQueryOperator обычно используется для выполнения запроса в BigQuery, а затем для загрузки результата в другую таблицу BigQuery (операция преобразования). Я предполагаю, что вы пытаетесь выбрать 3 столбца из таблицы BigQuery publi c и загрузить в другую таблицу. Поэтому укажите destination_dataset_table в BigQueryOperator.

Обратите внимание на следующее:

  1. Таблица stackoverflow.posts_questions очень велика, и даже если вы используете LIMIT, она все равно будет сканировать всю таблицу , Так что остерегайтесь стоимости.
  2. Используйте sql параметр вместо bql, так как он больше не используется.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...