Google bigquery 使用BigQueryInsertJobOperator代替BigQueryExecuteQueryOperator
最近更新的my Airflow和sawGoogle bigquery 使用BigQueryInsertJobOperator代替BigQueryExecuteQueryOperator,google-bigquery,airflow,Google Bigquery,Airflow,最近更新的my Airflow和sawBigQueryExecuteQueryOperator已被弃用,取而代之的是BigQueryInsertJobOperator。文档似乎相当模糊,链接到(和)。特别是,我不清楚是否有地方可以指定write\u disposition,destination\u dataset\u table,等等。我想确保我没有让事情变得过于复杂 我现在做的事 # my.sql SELECT * FROM `proj.ds.table_1` ---------------
BigQueryExecuteQueryOperator
已被弃用,取而代之的是BigQueryInsertJobOperator
。文档似乎相当模糊,链接到(和)。特别是,我不清楚是否有地方可以指定write\u disposition
,destination\u dataset\u table
,等等。我想确保我没有让事情变得过于复杂
我现在做的事
# my.sql
SELECT * FROM `proj.ds.table_1`
---------------------------------
# my-dag.py
BigQueryExecuteQueryOperator(
task_id='copy-table-1',
sql = 'my.sql',
destination_dataset_table='proj:ds.table_2',
write_disposition='WRITE_EMPTY',
dag=dag
)
我现在需要使用like吗
更不用说以所建议的格式向查询传递参数,而不仅仅是
params={'table':the_table}
..这是BigQueryInsertJobOperator
要遵循的API文档:
我不想弄乱Google的参数化SQL查询,而是使用此方法来获取模板化查询以写入BQ:
# my.sql
SELECT * FROM `{PROJECT}.{DATASET}.{TBL_TO_MOVE}`
---------------------------------
# my-dag.py
PROJECT = 'my-project'
DATASET = 'my-dataset'
TBL_TO_MOVE = 'some-table'
DESTINATION_DS = 'other-dataset'
DESTINATION_TBL = 'other-table'
BigQueryInsertJobOperator(
task_id='copy-table-1',
configuration={
'query': {
'query': open('my.sql', 'r').read().format(**locals()),
'destinationTable': {
'projectId': PROJECT,
'datasetId': DESTINATION_DS,
'tableId': DESTINATION_TBL
},
'useLegacySql': False,
'allowLargeResults': True,
}
},
dag=dag
)
open('my.sql',…)
读取sql文件,然后使用局部变量代替大括号变量(例如,{PROJECT}
被my PROJECT
替换)。我在理解新操作符时也遇到了一些问题,但我在气流通道中询问,他们将我指向示例dag,其中显示:
# my.sql
SELECT * FROM `{PROJECT}.{DATASET}.{TBL_TO_MOVE}`
---------------------------------
# my-dag.py
PROJECT = 'my-project'
DATASET = 'my-dataset'
TBL_TO_MOVE = 'some-table'
DESTINATION_DS = 'other-dataset'
DESTINATION_TBL = 'other-table'
BigQueryInsertJobOperator(
task_id='copy-table-1',
configuration={
'query': {
'query': open('my.sql', 'r').read().format(**locals()),
'destinationTable': {
'projectId': PROJECT,
'datasetId': DESTINATION_DS,
'tableId': DESTINATION_TBL
},
'useLegacySql': False,
'allowLargeResults': True,
}
},
dag=dag
)