BIEE这种关联了权限表查询很慢
0
事实表有product_id,dept_id,cate_id,sale_amount
权限维度表user_id,dept_id
每个user_id有多个dept_id,每个dept_id有多个user_id
对事实表做数据权限控制,根据dept_id控制,user_id和product_id通过dept_id关联
权限要求,每个user_id只能看到自己dept_id下的sale_amount
尝试过三种方法都不好。
1、两表物理层关联,权限逻辑表源中限制user_id=lower(':USER')
展示的话如果所选字段没有权限表的字段,权限得不到控制
2、两表物理关联,逻辑层一个逻辑表源映射两张物理表,权限可以得到控制。
但是生成的sql是先关联后过滤用户,dept_id是多对多关联,生成局部笛卡尔积,查询超慢
3、建立会话变量dept_id,由登录用户判断得出一组dept_id,在事实表逻辑源中设置dept_id=变量dept_id条件。
生成的sql是直接从数据库里load数据,在BIEE里计算汇总,性能差
求教,还有什么其他的办法
权限维度表user_id,dept_id
每个user_id有多个dept_id,每个dept_id有多个user_id
对事实表做数据权限控制,根据dept_id控制,user_id和product_id通过dept_id关联
权限要求,每个user_id只能看到自己dept_id下的sale_amount
尝试过三种方法都不好。
1、两表物理层关联,权限逻辑表源中限制user_id=lower(':USER')
展示的话如果所选字段没有权限表的字段,权限得不到控制
2、两表物理关联,逻辑层一个逻辑表源映射两张物理表,权限可以得到控制。
但是生成的sql是先关联后过滤用户,dept_id是多对多关联,生成局部笛卡尔积,查询超慢
3、建立会话变量dept_id,由登录用户判断得出一组dept_id,在事实表逻辑源中设置dept_id=变量dept_id条件。
生成的sql是直接从数据库里load数据,在BIEE里计算汇总,性能差
求教,还有什么其他的办法
没有找到相关结果
重要提示:提问者不能发表回复,可以通过评论与回答者沟通,沟通后可以通过编辑功能完善问题描述,以便后续其他人能够更容易理解问题.
1 个回复
seng - 从事BI、大数据、数据分析工作 2017-10-25 回答
赞同来自:
你可以查看以下具体执行的sql语句,优化具体语句就可以了。