Google bigquery 对两个不同用户的BigQuery数据访问,无需重复数据

Google bigquery 对两个不同用户的BigQuery数据访问,无需重复数据,google-bigquery,google-cloud-platform,Google Bigquery,Google Cloud Platform,我们有两种类型的用户和两个项目 用户: 应该访问表上所有数据的管理员 应该能够查询表中某些列的用户 如下图所示,访问数据应采用这种方式,而不会复制数据: 由于不可能基于列(甚至不基于表,因为BigQuery上的访问控制仅在数据集级别),因此想到的最简单的解决方案是: 在两个不同的数据集或项目中复制数据,一个包含所有数据,另一个包含第二组可以查询的列 我们如何在不重复数据的情况下找到解决方案 视图实际上是解决问题的最佳方案。您只需在视图的基础SQL中限制每个组在每个视图中看到的列 有关详

我们有两种类型的用户和两个项目

用户:

  • 应该访问表上所有数据的管理员
  • 应该能够查询表中某些列的用户 如下图所示,访问数据应采用这种方式,而不会复制数据:
由于不可能基于列(甚至不基于表,因为BigQuery上的访问控制仅在数据集级别),因此想到的最简单的解决方案是:

  • 在两个不同的数据集或项目中复制数据,一个包含所有数据,另一个包含第二组可以查询的列

我们如何在不重复数据的情况下找到解决方案

视图实际上是解决问题的最佳方案。您只需在视图的基础SQL中限制每个组在每个视图中看到的列

有关详细信息,请参阅:


视图实际上是完美的解决方案。为什么您认为用户仍然可以查询整个表?您可以限制它们在基础SQL中的每个视图中看到的列。为什么你说视图不是正确的解决方案?您只授予查看权限,这样他们就无法查询其他列。我写的VIEW不是正确的解决方案,因为我认为应该直接将用户添加到表中以进行查询,因为错误是用户没有足够的表权限。我已经阅读了@GrahamPolley在其评论中的链接,我发现我必须与视图共享该表,而不是直接与用户共享。@GrahamPolley:请提供您的评论作为答案,然后我接受它作为正确答案,如果没有,请让我知道怎么做。谢谢@Majico-还检查其他“技巧”:o)