【问题标题】:BigQuery invalid table name error when using Standard SQL in BigQuery API's在 BigQuery API 中使用标准 SQL 时出现 BigQuery 无效表名错误
【发布时间】:2017-08-14 01:15:30
【问题描述】:

我正在尝试使用 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`',
            
        }
    }
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`'}.

【问题讨论】:

  • 可以分享job id看看具体细节吗
  • @MoshaPasumansky 工作 ID:job_lIaunDu3LHrgwm_KDOoxwmH39xw
  • 我也需要项目名称
  • @MoshaPasumansky 你得到项目 ID 了吗?
  • 谢谢,我知道了 - 已发布答案。

标签: python google-bigquery google-api-python-client airflow


【解决方案1】:

该错误令人困惑,但根本原因是此查询被解释为旧版 SQL,而不是标准 SQL。在 JSON 中(与 Python 不同),布尔文字 truefalse 必须为小写,根据 JSON standard Section 3

JSON 值必须是对象、数组、数字或字符串,或其中之一
以下三个字面名称:

  false null true

文字名称必须小写。没有其他文字名称
允许。

所以如果你改变了

        `'useLegacySql': False,`

        `'useLegacySql': false,`

它应该可以工作

【讨论】:

  • 是的,它有效。我改为'useLegacySql':'false'。非常感谢
  • @MJK 如果有效,您应该将其标记为已回答问题。
猜你喜欢
  • 1970-01-01
  • 2017-10-24
  • 1970-01-01
  • 1970-01-01
  • 2022-01-07
  • 1970-01-01
  • 2016-11-23
  • 2018-09-10
  • 2016-11-29
相关资源
最近更新 更多