BQ cli无法从Google表格中获取数据

时间:2018-01-03 21:33:54

标签: google-bigquery google-compute-engine

我尝试使用bq cli运行查询,该查询连接来自连接到Google表格的表格和Bigquery上的另一个表格中的数据。我在Google Compute Engine上的某个实例上运行此操作,但我收到此错误:

Access Denied: BigQuery BigQuery: No OAuth token with Google Drive scope was found.

我看一下,发现我需要更改范围,但我的实例已经使用了设置"允许完全访问所有Cloud API"。

任何人都知道如何解决这个问题?

由于

1 个答案:

答案 0 :(得分:3)

问题是Drive不是Cloud API的一部分。它属于GSuite Activity API。见here。因此,未对GCE实例上的服务帐户启用Drive(https://www.googleapis.com/auth/drive)范围。

这是您需要做的事情:

  1. 点击https://console.developers.google.com/apis/api/drive.googleapis.com/overview?project=[YOUR-PROJECT-NUMBER]
  2. 启用项目中的云端硬盘API
  3. 创建实例时,使用CLI工具添加驱动器范围,即gcloud compute instances create [YOUR-PREFERRED-INSTANCE-NAME] --scopes=https://www.googleapis.com/auth/drive,https:/ /www.googleapis.com/auth/bigquery --zone=[YOUR-PREFERRED-ZONE]
  4. 现在运行您的查询,它应该正常工作,即bq query "SELECT * FROM [grey-sort-challenge:sheets_test.test]"
  5. 使用由Drive中的测试表支持的BigQuery表,我最初得到了与您相同的错误。但是,在设置上述范围后,它现在可以工作:

    enter image description here

    enter image description here

    现在,在我的测试/示例中,我从头开始创建了一个实例(第2步)。但是,如果您要修改现有实例,则需要停止该实例,然后使用gcloud beta compute instances set-scopes命令更新范围。请参阅here

    注意:当您以这种方式设置范围时,您将破坏已设置的所有现有范围 - 因此请确保输入所需的所有范围,例如:gcloud beta compute instances set-scopes [INSTANCE-NAME] --scopes=https://www.googleapis.com/auth/drive,https:// www.googleapis.com/auth/bigquery,... < / p>