У меня есть простая группа DAG
from airflow import DAG
from airflow.contrib.operators.bigquery_operator import BigQueryOperator
with DAG(dag_id='my_dags.my_dag') as dag:
start = DummyOperator(task_id='start')
end = DummyOperator(task_id='end')
sql = """
SELECT *
FROM 'another_dataset.another_table'
"""
bq_query = BigQueryOperator(bql=sql,
destination_dataset_table='my_dataset.my_table20180524'),
task_id='bq_query',
bigquery_conn_id='my_bq_connection',
use_legacy_sql=False,
write_disposition='WRITE_TRUNCATE',
create_disposition='CREATE_IF_NEEDED',
query_params={})
start >> bq_query >> end
При выполнении задачи bq_query
SQL-запрос сохраняется в заштрихованной таблице.Я хочу, чтобы он сохранялся в ежедневной многораздельной таблице.Для этого я изменил только destination_dataset_table
на my_dataset.my_table$20180524
.Я получил ошибку ниже при выполнении bq_task
:
Partitioning specification must be provided in order to create partitioned table
Как я могу указать BigQuery для сохранения результата запроса в ежедневную многораздельную таблицу?Моим первым предположением было использование query_params
в BigQueryOperator
, но я не нашел ни одного примера использования этого параметра.
РЕДАКТИРОВАТЬ:
Я использую google-cloud==0.27.0
клиент Python ... и это тот, который используется в Prod: (