【问题标题】:Join BigQuery tables in different projects using Service Accounts使用服务帐号加入不同项目中的 BigQuery 表
【发布时间】:2018-07-20 13:38:41
【问题描述】:

每个 BigQuery 项目我都有服务帐号。我需要使用在每个项目上配置的服务帐户对不同项目中的表进行连接。

这是我所拥有的:

  1. Service_EmailAccount1 -> project1
  2. Service_EmailAccount2 -> 项目2

我可以在各个项目中使用这些服务帐户连接到表,但是当我尝试在不同项目中的不同表上连接数据时,我会遇到访问错误。

原因是当我构建 BigQuery 服务时,我使用的是特定于项目的 JSON 文件,因为它包含项目 ID。

如何使用服务帐号连接不同项目中的表?

【问题讨论】:

  • 向我们展示您的 SQL 和错误消息

标签: google-bigquery service-accounts


【解决方案1】:

假设您通过 Service_EmailAccount1 运行查询
在这种情况下,您应该在 project2 中与 Service_EmailAccount1 共享您各自的数据集
并且您必须确保两个数据集位于同一位置
这就是你所需要的一切

详细了解 BigQuery 中的 Access Control 概念

【讨论】:

  • 使用服务帐号连接时,我需要 json。该 json 对于不同的项目会有所不同,或者相同的 json 将有助于连接到不同项目中的数据集。
【解决方案2】:

我相信以下想法可能会有所帮助,例如,您正在使用 service_emailaccount1 来获取 project1 的访问权限,

  1. 进入bigquery,点击项目名称,然后选择->切换项目->管理项目,会进入IAm & Admin页面
  2. 选择project1,然后您将看到该项目的权限页面。
  3. 将 service_emalaccount2 添加为该项目 1 的查看者/编辑者(如果 account1 是所有者)

然后,我相信这两个帐户都会访问 project1。
这是我为了访问多个项目而要做的事情,我不确定我们是否可以使用不同的服务帐户在一个查询中从不同的项目中进行查询。谢谢

【讨论】:

  • 我不推荐使用这种方法,因为它会打开 project1 中的所有数据集,以便为 service_emalaccount2 查看/编辑。在我的实践中,这是一个很大的禁忌!
  • @MikhailBerlyant 谢谢,没错。取决于他的需要,他可以选择共享数据集或整个项目。
猜你喜欢
  • 1970-01-01
  • 2018-12-31
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 2020-02-04
  • 2021-03-08
  • 1970-01-01
  • 2015-08-29
相关资源
最近更新 更多