BigQuery Web UI:显示存储过程的结果需要哪些权限?

Posted

技术标签:

【中文标题】BigQuery Web UI:显示存储过程的结果需要哪些权限?【英文标题】:BigQuery Web UI: Which permissions are required to display results from stored procedures? 【发布时间】:2020-09-23 02:08:08 【问题描述】:

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

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

管理员用户 (BigQuery.Owner) 可以毫无问题地执行 SP CALL some_dataset.some_sp(param); 并在 BigQuery Web UI 中查看查询结果。

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

实际行为:

预期行为:

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

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

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

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

【问题讨论】:

这感觉像是 UI 上的一个错误,您能否在此处触发 BigQuery 上的错误:cloud.google.com/support/docs/issue-trackers? 【参考方案1】:

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

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

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

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

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

【讨论】:

以上是关于BigQuery Web UI:显示存储过程的结果需要哪些权限?的主要内容,如果未能解决你的问题,请参考以下文章

Bigquery - 安排存储过程不再工作

如何更改 BigQuery 控制台(Web UI)中的默认选项,尤其是取消选中“使用旧版 SQL”?

迭代存储过程 BigQuery 中的行

BigQuery 存储过程,用于捕获表名以及该表名的记录数

Google bigquery Web UI:更改“新查询”框的高度?

ADO:用代码调用存储过程