在 BigQuery API 中使用标准 SQL 时,BigQuery 无效 table 名称错误

BigQuery invalid table name error when using Standard SQL in BigQuery API's

我正在尝试查询 table 并使用 python BigQuery API 将结果存储在另一个 BigQuery table 中。但是当我在查询部分使用标准 SQL 时,它会抛出无效的 table 名称错误。如何在 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`'}.

错误令人困惑,但根本原因是此查询被解释为旧版 SQL,而不是标准 SQL。在 JSON 中(不像在 Python 中),布尔文字 truefalse 必须是小写的,根据 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,`

它应该有效