【问题标题】:Google BigQuery Shared Dataset and Billing CostsGoogle BigQuery 共享数据集和结算费用
【发布时间】:2022-01-13 10:08:43
【问题描述】:

假设 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)时会发生什么?

查询费用/处理费用发生在project_B?

【问题讨论】:

    标签: google-cloud-platform google-bigquery billing


    【解决方案1】:

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

    但是,如果她在 project_B 中担任更强大的角色(例如 BigQuery 管理员),她可以从 project_B 对 Dataset_A 运行查询。在这种情况下,作业将在 project_B 中运行,因此这是要收费的项目。

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

    【讨论】:

    • BigQuery 数据查看者角色只能针对共享数据集运行查询。我已经测试过了。
    • 如果用户只有数据查看者角色,则无法在 project_A 中插入查询作业。费用发生在插入查询作业的项目中。那是您使用 UI 时出现在屏幕顶部的项目。
    • 每个查询都会向项目中插入一个查询作业。如果您单击“查询历史记录”,您可以看到。每个查询都有一个分配给它的jobID,格式为<projectID>.<location>.<unique_job_id>。此处提到的项目 ID 是查询时将计费的项目 ID。
    • 我找到了。太好了,谢谢!
    【解决方案2】:

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

    User_B 只能在 Project_A 中收费如果 BigQuery 从 Project_A 内的存储桶中检索数据。

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

    【讨论】:

      猜你喜欢
      • 2021-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-02
      • 2017-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多