Google BigQuery 共享数据集和结算费用

Google BigQuery Shared Dataset and Billing Costs

假设 user_A 是属于 project_A 的 Dataset_A 的所有者,他想与 user_B 共享 Dataset_A(user_B 默认项目是 project_B).

与 user_B 分享 Dataset_A 后 (打开数据集 -> 权限 -> 添加主体 -> BigQuery 数据查看者角色), user_B 可以在他的 BigQuery Explorer 中看到 project_A 固定 - UI 中的左侧导航栏(所以现在他可以看到 2 个项目 project_B 和新共享的 project_A)。

显然 Dataset_A 的存储成本发生在 project_A 上。 但是当 user_B 查询共享 Dataset_A 时会发生什么(即 user_B 查询 -> SELECT * FROM project_A.Dataset_A.table)?

查询 costs/processing 费用发生在 project_B?

当用户在项目中只有 BigQuery 数据查看者角色时,他无法 运行 在该项目中进行查询。因此,在您的示例中,user_B 将无法在选择 project_A 时 运行 进行查询。

但是,如果她在 project_B 中拥有更强大的角色(如 BigQuery Admin),她可以 运行 从 project_B 查询 Dataset_A。在这种情况下,工作将在 project_B 中 运行,因此这是将要收费的项目。

如您所述,存储费用仅适用于 project_A。您可以查看所有可用的预定义 BQ 角色 here.

如果 User_B 只能 访问 来自 Project_A 的数据,Bigquery 的使用将被计入 Project_B。

User_B 只能在 Project_A 中收费 如果 BigQuery 从 Project_A.

中的存储桶中检索数据

为避免这种情况,您可以在该存储桶中设置 requester pays