【发布时间】:2016-02-02 09:16:02
【问题描述】:
我们目前正在深入研究 Amazon Redshift 并测试不同的功能。
我们的一个基本要求是我们将定义不同的用户组,而这些用户组又将被授予访问不同视图的权限。
解决此问题的一种方法是为每个用户组分别实现一个视图。但是,由于我们有很多用户组对信息的需求几乎完全相同,因此我正在寻找一种在 Redshift 中更动态地实现这一点的方法。
例如,假设我有一个名为 users_london 的用户组和另一个名为 users_berlin 的用户组。两者都可以访问名为 v_employee_master_data 的视图,其中包含 employee_name、employee_job_title 和 employee_city 列。 两个组共享相同范围的信息,但有一个例外 - employee_city 列。
本质上,视图应该根据当前登录的用户组在employee_city列中预先过滤出某个值。
在 SQL 中 - 类似这样:
对于用户组 users_london:
SELECT * FROM v_employee_master_data WHERE employee_city = 'London';
对于用户组users_berlin:
SELECT * FROM v_employee_master_data WHERE employee_city = 'Berlin';
现在重新连接到 Amazon Redshift。底层 DB 运行时是否提供了开箱即用的功能,以某种方式将当前记录的用户组捕获为 全局变量 的形式,并根据该变量的值更改 SQL 语句?
【问题讨论】:
标签: postgresql amazon-web-services amazon-redshift