首页 > 解决方案 > BigQuery Web UI:显示存储过程的结果需要哪些权限?

问题描述

我们正在为我们的客户在 BigQuery 中创建一些托管用户。这些托管用户BigQuery Job User在项目中具有角色,并且BigQuery Data Viewer在数据集上具有角色。

最近我们正在试验存储过程 (SP),并根据https://cloud.google.com/blog/products/data-analytics/command-and-control-now-easier-in-bigquery-with创建了一个存储过程-脚本和存储过程

管理员用户 ( )在 BigQuery Web UI 中执行 SP 和查看查询结果BigQuery.Owner没有问题。CALL some_dataset.some_sp(param);

但是,当托管用户在 BigQuery Web UI 中运行相同的 SPCALL some_dataset.some_sp(param);时,它会返回“作业状态:成功”,但不会显示结果。

实际行为: 工作成功但没有结果

预期行为: 在此处输入图像描述

我已经确认SP的结果不为空。

当我检查查询历史时,托管用户确实看到“目标表:临时表”,并且此“临时表”包含正确的查询结果。问题是当托管用户运行 SP 时,这些结果未显示在 Web UI 编辑器下方。用户必须去查询历史才能找到它们。

临时表包含未显示的正确结果

此问题不会发生在常规 SQL 查询中,例如select * from some_table/some_view;. 常规查询结果正确显示在 Web UI 编辑器下方。

显示存储过程的结果需要哪些权限?我无法从 Google BigQuery 文档中找到任何相关信息。

标签: google-bigquery

解决方案


对于具有以下权限的托管用户,我的需求与您的情况相同:

  1. 项目级 BQ 作业用户权限
  2. 数据集级 BQ 数据查看者权限。

调用存储过程时,没有结果,只显示“作业状态:成功”。感谢您之前对“查询历史/临时表”的想法。但缺点是我们无法将结果保存为普通查询作业。经过几次测试,这是我的解决方案:

  • 创建具有权限的项目级自定义角色:bigquery.jobs.list
  • 将自定义角色分配给用户

现在用户可以像正常查询过程一样直接看到SP结果;而他只能看到自己的个人查询历史,这是我想要的最小权限控制


推荐阅读