Hierarchy 前置詞
HierarchyBelongsTo 前置詞
階層是所有商業智慧解決方案的重要組成部分,用於描述固有包含各種精細層級的
維度
。一些階層簡單直觀,而另一些則十分複雜,需要大量思考才能正確建模。
從階層的上層到下層,分支越來越具體。例如,在擁有市場、國家、州和城市層級的維度中,分支美洲顯示在階層的頂層,分支美國顯示在第二層,分支加州顯示在第三層,而舊金山位於底層。加州比美國更具體,舊金山又比加州更具體。
在關係模型中儲存階層是多個解決方案所面臨的共同難題。有幾種方法:
鄰接清單模型
路徑列舉法
巢狀集合模型
為了實現本教學課程的目的,我們將建立一個上階清單,因為該清單顯示階層的形式可直接在查詢中使用。如需瞭解其他方法的更多資訊,請瀏覽
Qlik Community
。
Hierarchy
前置詞
Hierarchy
前置詞是一個放在
LOAD
或
SELECT
陳述式前面的指令碼命令,可載入相鄰節點表格。
LOAD
陳述式至少要有三個欄位:ID (節點的唯一索引鍵)、父節點的參考及名稱。
前置詞會將載入的表格轉換為展開的節點表格;該表格有很多其他的資料行,分別用於階層的各個層級。
請執行下列動作:
建立新的應用程式並命名。
在
資料載入編輯器
中新增新的指令碼區段。
叫用區段
Wine
。
在右側功能表的
DataFiles
之下,按一下
選取資料
。
上傳然後選取
Winedistricts.txt
。
在
從以下項目選取資料
視窗中,取消核取
Lbound
和
RBound
欄位,就不會載入這些內容。
按一下
插入指令碼
。
在
LOAD
陳述式之上輸入下列內容:
Hierarchy (NodeID, ParentID, NodeName)
您的指令碼應如下所示:
Hierarchy (NodeID, ParentID, NodeName)
NodeID,
ParentID,
NodeName
FROM [lib://DataFiles/Winedistricts.txt]
(txt, utf8, embedded labels, delimiter is '\t', msq);
按一下
載入資料
。
使用
資料模型檢視器
的
預覽
區段檢視產生的表格。
產生的展開節點表格擁有與來源表格一樣的記錄數:每個節點一個。展開的節點表格非常實用,因為它符合在關係模型中分析階層的一些要求:
所有節點名稱存在於一個相同的資料行中,因此可用於搜尋。
此外,不同的節點層級已分別擴展至各個欄位,即那些可用於向下探查群組或作為樞紐分析表中維度的欄位中。
此外,不同的節點層級已分別擴展至各個欄位,即那些可用於向下探查群組的欄位中。
可以將其設為包含節點的唯一路徑,以正確的順序列出所有上階。
也可以將其設為包含節點深度,例如到根的距離。
產生的表格如下所示:
表格中顯示使用
Hierarchy
前置詞載入的資料樣本
HierarchyBelongsTo
前置詞
像
Hierarchy
前置詞一樣,
HierarchyBelongsTo
前置詞是一個放在
LOAD
或
SELECT
陳述式前面的指令碼命令,可載入相鄰節點表格:
同樣的,
LOAD
陳述式至少要有三個欄位:ID (節點的唯一索引鍵)、父節點的參考及名稱。前置詞會將載入的表格轉換為上階表格,該表格將所有上階和下階的組合列為單獨的記錄。因此,很容易就能找到特定節點的所有上階或下階。
請執行下列動作:
修改
資料載入編輯器
中的
Hierarchy
陳述式,使其成為以下格式:
HierarchyBelongsTo (NodeID, ParentID, NodeName, BelongsToID, BelongsTo)
按一下
載入資料
。
使用
資料模型檢視器
的
預覽
區段檢視產生的表格。
上階表格符合在關係模型中分析階層的一些要求:
如果節點 ID 代表單個節點,上階 ID 則代表階層的整個樹狀和子樹狀結構。
所有節點名稱在角色中同時以節點和樹狀結構的形式存在,並且均可用於搜尋。
也可以將其設為包含節點深度和上階深度之間的深度差異,即與子樹狀圖的根的距離。
產生的表格如下所示:
表格中顯示使用
HierarchyBelongsTo
前置詞載入的資料
階層經常用於授權。組織階層就是一個範例。每個管理員有權查看其所在部門的所有內容,包括所有子部門。但他們不一定有權查看其他部門的內容。
組織階層範例
這表示,系統會允許不同的人查看不同的組織子樹狀結構。授權表格可能如下所示:
存取NTNAME個人位置權限使用者ACME\JRLJohn產品長人資使用者ACME\CAHCarol執行長執行長使用者ACME\JERJames工程主任工程使用者ACME\DBKDiana財務長財務使用者ACME\RNLBob營運長鎖售額使用者ACME\LFDLarry技術長產品
在此情況下,
Carol
可以查看與
CEO
和以下有關的所有內容;
Larry
可以查看
Product
組織;
James
只能查看
Engineering
組織。
通常階層會儲存在相鄰節點表格中。在此範例中,若要解決此,可以使用
HierarchyBelongsTo
載入相鄰節點表格,並命名上階
欄位
Tree
。
若您想要使用
Section Access
,請載入
Tree
的大寫複本,並叫用此新欄位
PERMISSIONS
。最後,您需要載入驗證表格。可以使用下列指令碼行完成這兩個最後步驟。請注意,
TempTrees
表格是由
HierarchyBelongsTo
陳述式建立的表格。
請注意,這只是範例。在
Qlik Sense
中沒有要完成的附帶活動。
Trees:
LOAD *,
Upper(Tree) as PERMISSIONS
Resident TempTrees;
Drop Table TempTrees;
Section Access;
Authorization:
LOAD ACCESS,
NTNAME,
UPPER(Permissions) as PERMISSIONS
From Organization;
Section Application;
此範例會產生下列資料模型:
資料模型:
Authorization
、
Trees
、
Fact
和
Nodes
表格