MJK*_*MJK 7 python google-bigquery google-api-python-client airflow
我正在尝试使用 python BigQuery API 查询表并将结果存储在另一个 BigQuery 表中。但是当我在查询部分使用标准 SQL 时,它会抛出无效的表名错误。如何在 BigQuery API 中使用标准 SQL?我正在使用气流 BigQuery 挂钩
'configuration': {
'query': {
'destinationTable': {
'tableId': u 'our_table_name',
'datasetId': 'our_dataset_id',
'projectId': 'our_project_id'
},
'useLegacySql': False,
'allowLargeResults': True,
'writeDisposition': 'WRITE_TRUNCATE',
'query': u'SELECT * FROM `projectID.datasetId.tablename`',
}
}
Run Code Online (Sandbox Code Playgroud)
Exception: BigQuery job failed. Final error was: {u'reason': u'invalid', u'message': u'Invalid table name: `projectId:datasetId.tableId`', u'location': u'`projectId:datasetId.tableId`'}.
Run Code Online (Sandbox Code Playgroud)
该错误令人困惑,但根本原因是该查询被解释为 Legacy SQL,而不是标准 SQL。在JSON(不像,说,在Python),布尔文字true和false必须是小写,每JSON标准第3部分:
JSON 值必须是对象、数组、数字或字符串,或
以下三个字面名称之一:Run Code Online (Sandbox Code Playgroud)false null true文字名称必须是小写的。不允许使用其他文字名称
。
所以如果你改变
`'useLegacySql': False,`
Run Code Online (Sandbox Code Playgroud)
到
`'useLegacySql': false,`
Run Code Online (Sandbox Code Playgroud)
它应该工作