Оператор BigQueryHook не распознает аргумент use_legacy_sql

Попытка выполнить запрос с помощью pythonoperator (используя BigQueryHook)

def CheckIncomingRecords(**context):
    sql = context['templates_dict']['sql']
    logging.info("sql passed is : {}".format(sql))
    bq = BigQueryHook(bigquery_conn_id='bigquery_default', 
use_legacy_sql=False)
    conn = bq.get_conn()
    cursor = conn.cursor()
    results = cursor.execute(sql)
return results

Получение ошибки ниже: TypeError: init() получил неожиданный аргумент ключевого слова 'use_legacy_sql'

Использование 1.9.0-composer. Проверил исходный код и не могу выяснить, почему он не распознает аргумент, упомянутый в документе. пожалуйста, порекомендуйте

1 ответ

Ошибка, которую вы получаете, заключается в том, что в Airflow 1.9.0 в BigQueryHook существуют только 2 параметра:

Исходный код: https://github.com/apache/airflow/blob/1.9.0/airflow/contrib/hooks/bigquery_hook.py

def __init__(self,
             bigquery_conn_id='bigquery_default',
             delegate_to=None):
    super(BigQueryHook, self).__init__(
        conn_id=bigquery_conn_id,
        delegate_to=delegate_to)

Документы для Airflow 1.9.0: https://airflow.readthedocs.io/en/1.9.0/integration.html

use_legacy_sql был добавлен в BigQueryHook init() в Airflow 1.10.0. Документы для Airflow 1.10.0: https://airflow.readthedocs.io/en/1.10.0/integration.html

Другие вопросы по тегам