我可以访问 BigQuery 表,并且可以从 BigQuery 控制台或 gcloud 命令行使用它。但我无法在 Datalab 中针对它编写基本查询并收到拒绝访问错误。
2 回答
Datalab 旨在用于团队环境。笔记本可能包含代码执行的结果(例如 BigQuery SQL 查询)并且可供项目成员访问。因此,Datalab 使用您项目中的 App Engine 服务帐号来访问数据。这确保了查看和执行笔记本的统一访问权限,并将意外泄露数据的风险降至最低。如果您不控制对数据的访问,您可能需要请求将访问权限授予服务帐户。您可以通过单击左侧导航栏中的权限并找到 App Engine 服务帐户,在Developers Console中找到服务帐户。目前,Datalab 不使用个人用户的凭据。
您在 BigQuery 控制台和 Datalab 中工作的项目是否相同?如果是,您需要成为项目所有者/编辑者权限。
另外,请注意,在 Google Datalab 中,笔记本使用服务帐户而不是您自己的帐户来访问数据。因此,您可以检查这两个帐户之间是否存在任何权限差异。例如,如果您在查询中引用了另一个 BigQuery 项目中的数据集,则可以执行以下步骤:
在您的数据实验室笔记本中运行以下命令以检查正在使用的服务帐户:
%%bash curl --silent -H "Metadata-Flavor: Google" \ http://metadata/computeMetadata/v1/instance/service-accounts/default/email
将步骤 1 结果显示的服务帐户添加到正在查询的其他项目的权限列表中