根据访问报表的用户或组执行不同的查询
Perform a different query according to the user or group accessing the report
我们在 Data Studio 上创建了一份报告,其中显示了通过查询连接器从 BigQuery table 检索到的某些指标。有多个国家/地区,因此我们不希望一个国家/地区的人可以访问其他国家/地区的数据。为此,我们考虑过为每个国家/地区创建不同的报告并修改查询的 WHERE
子句,如下所示:
SELECT
*
FROM `mytable`
WHERE
country = 'ESP'
这可行,但是我们要维护的报告太多,因此需要对多个报告执行相同的更改。有没有办法检测正在访问仪表板的用户(或者更好的是,用户分配到的组),并根据该用户设置要在查询中检索的国家/地区?还有其他更好的方法吗?
要保持这种完全动态,您可以尝试使用 BigQuery 的行级安全功能 [1]。从 DataStudio 的角度来看,您将为每个人发送相同的查询,但 BigQuery 只会 return 经过身份验证的用户有权读取的行。为此,需要为 DataStudio 数据源配置查看者的凭据访问权限。
值得指出的是,管理行级访问策略本身就存在挑战。本文涵盖了其中的一些 [1] 并将此方法与其他方法(授权视图、单独的表等)进行了比较。
[1] https://cloud.google.com/bigquery/docs/row-level-security-intro
我们在 Data Studio 上创建了一份报告,其中显示了通过查询连接器从 BigQuery table 检索到的某些指标。有多个国家/地区,因此我们不希望一个国家/地区的人可以访问其他国家/地区的数据。为此,我们考虑过为每个国家/地区创建不同的报告并修改查询的 WHERE
子句,如下所示:
SELECT
*
FROM `mytable`
WHERE
country = 'ESP'
这可行,但是我们要维护的报告太多,因此需要对多个报告执行相同的更改。有没有办法检测正在访问仪表板的用户(或者更好的是,用户分配到的组),并根据该用户设置要在查询中检索的国家/地区?还有其他更好的方法吗?
要保持这种完全动态,您可以尝试使用 BigQuery 的行级安全功能 [1]。从 DataStudio 的角度来看,您将为每个人发送相同的查询,但 BigQuery 只会 return 经过身份验证的用户有权读取的行。为此,需要为 DataStudio 数据源配置查看者的凭据访问权限。
值得指出的是,管理行级访问策略本身就存在挑战。本文涵盖了其中的一些 [1] 并将此方法与其他方法(授权视图、单独的表等)进行了比较。
[1] https://cloud.google.com/bigquery/docs/row-level-security-intro