问题描述
我正在尝试在OBIEE 12c中实现节访问。我引用了一个Blog,并按照实现“节访问”的步骤进行操作。但是最终结果与预期不符。
博客链接:http://bisimplified.blogspot.com/2014/06/obiee-11g-datarow-level-security.html
首先,我创建了“ User_1”,并将该用户分配给“ BI Consumer”应用程序角色。
我只想向“ User_1”显示某些数据。
创建的初始化块。 这是我用来定义初始化块(数据源)的SQL语句:
select pc.category_name from dim_category ft,product_categories pc where ft.category_id=pc.category_id and lower(ft.username) = lower(':USER') .
我将“默认”(字符串)分配给默认初始化程序,并检查“行明智的初始化”和“使用缓存”(初始化块(我们正在研究的块)->编辑变量目标->新建(变量) )。
否则,如果将Default Initializer保留为空,则在将Section变量分配给Application Role / User时提示错误。
(如果默认初始化程序为空,并尝试将Section变量分配给应用程序角色/用户,则显示错误消息的屏幕截图。)
会话变量可以做什么?
此后,我将此会话变量分配给“ BI Consumer”应用程序角色。
我要求对OBIEE 12c中的“实现节访问”提出建议,或者如果您要在上述步骤中添加任何内容,请纠正我。
解决方法
关于一般知识的综合答案:“部分访问权”用词不当。目的是“行级安全性”。
上面查询中提到的问题主要源于':USER'的使用,它很可能是“ weblogic”,并且谁拥有/没有该查询的数据。 必须使用实际带回数据的用户帐户来验证查询。
第二,由于查询设置为按行初始化,因此它必须带回代表变量名和实际值的值对。 Section_Variable | A类 Section_Variable | B类 等等
因此SQL必须拉出
选择 'Section_Variable', ft.category_name 从 .....