Metabase免费版无RLS,如何获取登录用户邮箱作查询变量实现数据过滤?
Metabase免费版实现基于登录用户邮箱的数据过滤方案
方法1:用户属性+原生SQL变量(自动过滤)
这是最直接的实现方式,利用Metabase内置的用户属性变量自动填充当前登录用户的邮箱:
- 配置用户属性:进入Metabase后台「设置」→「用户」,编辑目标用户,添加自定义属性(比如命名为
user_email),属性值设为用户的登录邮箱。如果是SSO登录的用户,Metabase会自动同步系统自带的email属性,无需手动添加。 - 编写带变量的SQL查询:
SELECT * FROM 你的数据表 WHERE 数据中的邮箱字段 = {{current_user_attribute:user_email}} -- 若用SSO同步的系统邮箱属性,替换为 {{current_user_attribute:email}}
- 将该查询保存为问题并添加到仪表盘,打开时会自动用当前登录用户的邮箱过滤数据。
方法2:仪表盘参数+用户属性默认值(支持手动切换)
如果需要保留用户手动切换过滤条件的能力,同时默认加载自身邮箱对应数据:
- 创建仪表盘参数:进入仪表盘编辑模式,点击「添加参数」,类型选「文本」,在「默认值」选项中选择「用户属性」,指定已配置的邮箱属性(
user_email或系统自带的email)。 - 关联问题过滤:给仪表盘内的问题添加过滤条件,将过滤值设置为刚才创建的仪表盘参数。打开仪表盘时参数会自动填充当前用户邮箱,用户也可手动修改参数切换数据范围。
注意事项
- 该方式需要给每个需过滤的问题单独配置逻辑,无法像RLS那样全局生效,适合仪表盘数量不多的场景。
- 若要防止用户修改过滤逻辑,需将问题和仪表盘设置为「只读」权限,避免用户编辑问题移除过滤条件。
内容的提问来源于stack exchange,提问作者carlaa
相关产品推荐
相关产品推荐

