Google BigQuery 通过 API 访问公共数据集

Posted

技术标签:

【中文标题】Google BigQuery 通过 API 访问公共数据集【英文标题】:Google BigQuery access public dataset through API 【发布时间】:2014-07-11 21:20:37 【问题描述】:

我已在此处将数据集共享给所有经过身份验证的用户:

https://bigquery.cloud.google.com/table/master-smithy-633:nyc_taxi.total_amount_month

我可以通过 Web UI 从其他帐户访问它。但是当我运行 javascript OAuth 访问数据集时,出现以下错误:

Object code: 403, message: "Access Denied: Job master-smithy-633:job_PcyI97Mklw8mbJQUWGhgCxRRKTQ: RUN_QUERY_JOB", data: Array[1], error: Object

这是访问数据集的代码。你可以克隆它来查看错误:

https://vida.io/documents/icwvp4qcCbEkYW2ve

如何在不同的 Google 帐户中启用对上述共享数据集的查询?

【问题讨论】:

【参考方案1】:

问题不在于您无权访问数据,问题在于发出请求的用户无权在项目中运行查询作业。

出于计费和会计目的,所有作业(包括查询)都必须归属于 Cloud 项目。允许在该项目中运行作业的项目权限集(因为该项目负责计费)。即使您没有启用计费功能也是如此,因为未计费的查询使用量有一个配额会被计入项目。

因此,您尝试在项目 master-smithy-c33 中运行作业,而发出请求的用户无权访问该作业。您可以通过 google 开发者控制台 (https://console.developers.google.com/) 设置项目权限。或者,您可以在您有权运行作业的其他项目中运行。

【讨论】:

我假设您正在谈论此权限:imgur.com/PZ1KN9F。我试图设置它,但它不保存。此外,我的所有凭据的权限都设置为“可以编辑”。它也应该包括“可以查看”? 您为哪个用户运行 OAuth?是访问网站的用户吗?是服务帐号吗? 乔丹,我不确定我是否理解你的问题。我在我的 Javascript 代码中使用 OAuth。我希望能够向其他人展示可视化,以便他们查看。所以我分享给所有经过身份验证的用户。当另一个用户点击该页面时,Javascript 调用查询返回 403 错误。此用户使用其他帐户登录 Google。 发出请求的用户必须是您正在运行作业的项目的成员。在这种情况下,他们需要自己的项目或成为 master-smithy-c33 的成员. 嗨,乔丹,我可以共享对特定电子邮件地址的数据访问权限。但我正在寻找一种将其分享给公众的方法。这可能吗?该线程建议使用“所有经过身份验证的用户”。 ***.com/questions/14967967/…

以上是关于Google BigQuery 通过 API 访问公共数据集的主要内容,如果未能解决你的问题,请参考以下文章

例外:未配置访问 - API 更新后使用 Google Apps 脚本的 BigQuery

如何从本地机器访问 GCP bigquery API?

如何通过服务帐户通过 Google BigQuery External Table 访问 Google Sheets Doc

通过 BigQuery 从 Google 分析中获取访问者纬度和经度

通过 Google BigQuery API 将查询结果导出为 JSON

Google Spark-BigQuery-Connector如何利用BigQuery Storage API?