在 Qlikview 的 LOAD / Section Access 中
While inside LOAD / Section Access in Qlikview
我有一个层次结构 Table,我尝试将其添加到 QlikView 中,以便对用户使用 RESTRICTION(部分访问)show/hide 数据。
在 Table 上,我有用户 REFERENCE,其 ID 链接到 IDPARENT 以便具有层次结构。
我希望叶用户(层次结构中的最后一个)的所有用户 "on top" 都可以访问他的数据。
为了做到这一点,我使用了这个 SQL 查询:
Select
REFERENCE,
LEVEL-1 "LEVEL",
from HIERARCHYTABLE
start with TYPE='VD' //Start hierarchy with all the users with type='VD'
connect by ID = prior IDPARENT;
它return :
VD254 0
IG203 1
GR203 2
VD255 0
IG232 1
GR258 2
IG235 1
GR259 2
-> 所以 IG203 和 GR203 可以访问 VD254 数据
并且IG232、GR258、IG235、GR259可以接入VD255
有了这个,我所有的参考资料都与级别相关联(这里底部的用户是级别“0”)。
我希望我的 AUTHENTIFICATE table 像 :
ACCESS, REFERENCE, PASSWORD, RESTRICTION
ADMIN, ADMIN, ADMIN, *
USER, VD254, VD254, VD254
USER, VD254, VD254, VD255 // Here the user VD254 can access to his data and the VD255 user data
所以我在想,当我有一个 0 级时,所有下一个用户将在 RESTRICTION 中拥有 0 级的参考,直到循环看到另一个 0 级:
但我做不到:
。 IterNo() 始终为“0”,因此 IF 条件始终为真且值错误!
。它向 AUTH 添加无限数量的行,因此 LEVEL <> '0' 永远不会为真...
AUTHRESIDENT:
LOAD
REFERENCE,
LEVEL,
Select
REFERENCE,
LEVEL-1 "LEVEL",
from HIERARCHYTABLE
start with TYPE='VD' //Start hierarchy with all the users with type='VD'
connect by ID = prior IDPARENT;
Let vRowCount = NoOfRows('AUTHRESIDENT');
DO WHILE (IterNo() <> vRowCount)
IF peek('LEVEL', IterNo(), 'AUTHRESIDENT')='0' THEN
Let vNumVd = peek('REFERENCE', IterNo(), 'AUTHRESIDENT');
AUTH:
LOAD
'USER' as ACCESS,
'00211' as REFERENCE, // Only to test
'00211' as PASSWORD,
$(vNumVd) as RESTRICTION
RESIDENT AUTHRESIDENT
WHILE LEVEL <> '0';
ENDIF;
LOOP;
非常感谢您的帮助!
我终于找到了层次结构不平衡的解决方案,这是我针对相同情况的人的代码:
HIERARCHY:
HierarchyBelongsTo(IDNOEUD, IDNOEUDPARENT, REFERENCE, TreeID, TreeName)
LOAD
REFERENCE,
IDNOEUD,
IDNOEUDPARENT,
Select
REFERENCE,
IDNOEUD,
IDNOEUDPARENT,
from HIERARCHYTABLE;
Trees:
LOAD
*,
Upper(TreeName) as PERMISSION,
REFERENCE as MYPERMISSIONFIELD // Field which is the filter
Resident HIERARCHY;
Drop Table HIERARCHY;
Section Access;
AUTH:
LOAD * INLINE [
ACCESS, USERID, PASSWORD, PERMISSION
ADMIN, ADMIN, ADMIN, * // To add the ADMIN !
];
AUTH:
LOAD
'USER' as ACCESS,
REFERENCE as USERID,
REFERENCE as PASSWORD,
UPPER(REFERENCE) as PERMISSION;
SELECT
REFERENCE
FROM HIERARCHYTABLE;
Section Application;
然后权限链接到所有的MYPERMISSIONFIELD。
我有一个层次结构 Table,我尝试将其添加到 QlikView 中,以便对用户使用 RESTRICTION(部分访问)show/hide 数据。
在 Table 上,我有用户 REFERENCE,其 ID 链接到 IDPARENT 以便具有层次结构。
我希望叶用户(层次结构中的最后一个)的所有用户 "on top" 都可以访问他的数据。
为了做到这一点,我使用了这个 SQL 查询:
Select
REFERENCE,
LEVEL-1 "LEVEL",
from HIERARCHYTABLE
start with TYPE='VD' //Start hierarchy with all the users with type='VD'
connect by ID = prior IDPARENT;
它return :
VD254 0
IG203 1
GR203 2
VD255 0
IG232 1
GR258 2
IG235 1
GR259 2
-> 所以 IG203 和 GR203 可以访问 VD254 数据
并且IG232、GR258、IG235、GR259可以接入VD255
有了这个,我所有的参考资料都与级别相关联(这里底部的用户是级别“0”)。
我希望我的 AUTHENTIFICATE table 像 :
ACCESS, REFERENCE, PASSWORD, RESTRICTION
ADMIN, ADMIN, ADMIN, *
USER, VD254, VD254, VD254
USER, VD254, VD254, VD255 // Here the user VD254 can access to his data and the VD255 user data
所以我在想,当我有一个 0 级时,所有下一个用户将在 RESTRICTION 中拥有 0 级的参考,直到循环看到另一个 0 级:
但我做不到:
。 IterNo() 始终为“0”,因此 IF 条件始终为真且值错误!
。它向 AUTH 添加无限数量的行,因此 LEVEL <> '0' 永远不会为真...
AUTHRESIDENT:
LOAD
REFERENCE,
LEVEL,
Select
REFERENCE,
LEVEL-1 "LEVEL",
from HIERARCHYTABLE
start with TYPE='VD' //Start hierarchy with all the users with type='VD'
connect by ID = prior IDPARENT;
Let vRowCount = NoOfRows('AUTHRESIDENT');
DO WHILE (IterNo() <> vRowCount)
IF peek('LEVEL', IterNo(), 'AUTHRESIDENT')='0' THEN
Let vNumVd = peek('REFERENCE', IterNo(), 'AUTHRESIDENT');
AUTH:
LOAD
'USER' as ACCESS,
'00211' as REFERENCE, // Only to test
'00211' as PASSWORD,
$(vNumVd) as RESTRICTION
RESIDENT AUTHRESIDENT
WHILE LEVEL <> '0';
ENDIF;
LOOP;
非常感谢您的帮助!
我终于找到了层次结构不平衡的解决方案,这是我针对相同情况的人的代码:
HIERARCHY:
HierarchyBelongsTo(IDNOEUD, IDNOEUDPARENT, REFERENCE, TreeID, TreeName)
LOAD
REFERENCE,
IDNOEUD,
IDNOEUDPARENT,
Select
REFERENCE,
IDNOEUD,
IDNOEUDPARENT,
from HIERARCHYTABLE;
Trees:
LOAD
*,
Upper(TreeName) as PERMISSION,
REFERENCE as MYPERMISSIONFIELD // Field which is the filter
Resident HIERARCHY;
Drop Table HIERARCHY;
Section Access;
AUTH:
LOAD * INLINE [
ACCESS, USERID, PASSWORD, PERMISSION
ADMIN, ADMIN, ADMIN, * // To add the ADMIN !
];
AUTH:
LOAD
'USER' as ACCESS,
REFERENCE as USERID,
REFERENCE as PASSWORD,
UPPER(REFERENCE) as PERMISSION;
SELECT
REFERENCE
FROM HIERARCHYTABLE;
Section Application;
然后权限链接到所有的MYPERMISSIONFIELD。