无法通过 API 查询 BigQuery 数据集来获取数据

Posted

技术标签:

【中文标题】无法通过 API 查询 BigQuery 数据集来获取数据【英文标题】:not able to get data by quereing the BigQuery dataset via API 【发布时间】:2016-07-01 06:54:16 【问题描述】:

我刚刚开始探索 BigQuery 平台。我已经成功实现了流式输入并通过 API 列出了表中的数据。

现在我正在尝试通过 API 查询表,但即使在项目和数据集上具有“所有者”角色,也会出现以下错误。

Exception in thread "main" com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden

  "code" : 403,
  "errors" : [ 
    "domain" : "global",
    "message" : "Access Denied: Table eminent-expanse-134408:_f0217d6d035af97e7c4a87ad93962ba4c594717d.anonabb84babe0de5db5b0a1151dfa1857fcea3e92cd: The user abhinandan@eminent-expanse-134408.iam.gserviceaccount.com does not have permission to read data from a table in dataset eminent-expanse-134408:_f0217d6d035af97e7c4a87ad93962ba4c594717d",
    "reason" : "accessDenied"
   ],
  "message" : "Access Denied: Table eminent-expanse-134408:_f0217d6d035af97e7c4a87ad93962ba4c594717d.anonabb84babe0de5db5b0a1151dfa1857fcea3e92cd: The user abhinandan@eminent-expanse-134408.iam.gserviceaccount.com does not have permission to read data from a table in dataset eminent-expanse-134408:_f0217d6d035af97e7c4a87ad93962ba4c594717d"

我错过了什么?我应该启用计费吗?

【问题讨论】:

【参考方案1】:

您使用的似乎是服务帐户 (abhinandan@eminent-expanse-134408.iam.gserviceaccount.com),而不是您的用户帐户。服务帐户需要是项目的成员或数据集 ACL 上的(至少一个)读取器,您才能读取数据。

【讨论】:

我已经验证了服务帐户的权限。它是项目的所有者。我仍然遇到同样的错误。

以上是关于无法通过 API 查询 BigQuery 数据集来获取数据的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery 控制台 api“无法在没有项目 ID 的情况下开始工作”

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

无法从 DataLab 连接到 Bigquery API

BigQuery Storage API 无法读取由有序 (ORDER BY) 查询创建的临时表

使用 python 和 BigQuery API 获取 BigQuery 数据集中的表列表

如何通过 API 在 BigQuery 中创建没有架构的表?