我正在尝试使用 python BigQuery API 查询表并将结果存储在另一个 BigQuery 表中。但是当我在查询部分使用标准 SQL 时,它会抛出无效表名错误。如何在 BigQuery API 中使用标准 SQL?我正在使用 Airflow BigQuery 钩子(Hook)
'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`',
}
}
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`'}.
最佳答案
错误令人困惑,但根本原因是此查询被解释为旧版 SQL,而不是标准 SQL。在 JSON 中(不像在 Python 中), bool 文字 true
和 false
必须是小写的,根据 JSON standard Section 3 :
A JSON value MUST be an object, array, number, or string, or one of
the following three literal names:false null true
The literal names MUST be lowercase. No other literal names are
allowed.
如果你改变
`'useLegacySql': False,`
到
`'useLegacySql': false,`
它应该工作
关于python - 在 BigQuery API 中使用标准 SQL 时出现 BigQuery 无效表名错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42942926/