google-bigquery - BQ cli 未从 Google 表格获取数据

标签 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.

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

谁知道怎么解决?

谢谢

最佳答案

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

这是您需要做的:

  1. 通过点击 https://console.developers.google.com/apis/api/drive.googleapis.com/overview?project=[YOUR-PROJECT-NUMBER] 在您的项目中启用 Drive API
  2. 创建实例时,使用 CLI 工具添加云端硬盘范围,即 gcloud compute instances create [YOUR-PREFERRED-INSTANCE-NAME] --scopes=https://www.googleapis.com/auth/驱动器,https:/ /www.googleapis.com/auth/bigquery --zone=[YOUR-PREFERRED-ZONE]
  3. 现在运行您的查询,它应该可以工作,即 bq query "SELECT * FROM [grey-sort-challenge:sheets_test.test]"

使用由 Drive 中的测试表支持的 BigQuery 表,我最初遇到了与您相同的错误。但是,在如上所述设置范围后,它现在可以工作了:

enter image description here

enter image description here

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

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

关于google-bigquery - BQ cli 未从 Google 表格获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48085437/

相关文章:

google-cloud-platform - 具有BigTable连接的BigQuery,无法执行任何查询

google-compute-engine - compute.instances.host 在实例期间出错

google-compute-engine - 使用gcloud创建一个新的Google Cloud项目

javascript - 使用云函数将数据加载到 BigQuery 表中时出现问题

python - BigQuery - 在分区内嵌套操作,以便聚合具有 170 亿条记录的表中的连续记录

google-bigquery - 如何在 BigQuery 表中选择最新的分区?

google-cloud-platform - 即使存在配额,Google Compute Engine 也找不到 GPU

redis - 使用大列表的地理定位数据,用纬度/经度标记巨大的元素列表

google-cloud-platform - 如何监控在 GCE 上运行的容器虚拟机的内存使用情况

google-cloud-platform - 如何让谷歌云功能与谷歌计算引擎实例通信?