在 BigQuery API 中使用标准 SQL 时出现 BigQuery 无效表名错误

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)

Mos*_*sky 8

该错误令人困惑,但根本原因是该查询被解释为 Legacy SQL,而不是标准 SQL。在JSON(不像,说,在Python),布尔文字truefalse必须是小写,每JSON标准第3部分

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

  false null true
Run Code Online (Sandbox Code Playgroud)

文字名称必须是小写的。不允许使用其他文字名称

所以如果你改变

        `'useLegacySql': False,`
Run Code Online (Sandbox Code Playgroud)

        `'useLegacySql': false,`
Run Code Online (Sandbox Code Playgroud)

它应该工作