我们正在为我们的客户端在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的结果不为空。
在我检查查询历史时,托管用户确实看到了"Destination table: Temporary table",并且这个“临时表”包含了正确的查询结果。问题是,当托管用户运行SP时,这些结果未显示在web用户界面编辑器下。用户必须转到查询历史记录才能找到它们。
这个问题不会发生在像select * from some_table/some_view;
这样的常规SQL查询上。常规查询结果将正确显示在web用户界面编辑器下方。
显示存储过程的结果需要哪些权限?我在谷歌BigQuery文档中找不到任何关于这方面的信息。
发布于 2020-10-26 21:18:48
对于具有以下权限的托管用户,我的需求与您的情况相同:
调用存储过程时,不显示任何结果,只显示"Job status: SUCCESS“。感谢您之前提出的“查询历史/临时表”的想法。但缺点是我们不能将结果保存为普通的查询作业。经过几次测试,以下是我的解决方案:
具有权限的
现在,用户可以像正常查询过程一样直接看到SP结果;并且他只能看到自己的个人查询历史记录,这是我想要的最小权限控制
https://stackoverflow.com/questions/64020030
复制相似问题