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里计算汇总,性能差

求教,还有什么其他的办法
已邀请:
0

seng - 从事BI、大数据、数据分析工作 2017-10-25 回答

我觉得(2)和(3) 逻辑上不会影响速度的, 加上userid的条件都不会有多对多关系了。
你可以查看以下具体执行的sql语句,优化具体语句就可以了。
 

要回复问题请先登录注册