Оператор 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