Hierarchy
hierarchy öneki, üst-alt öğe hiyerarşi tablosunu QlikView veri modelinde faydalı bir tabloya dönüştürmek için kullanılır. Bu önek, LOAD veya SELECT deyiminin önüne konulabilir ve yüklenen deyimin sonucunu tablo dönüştürme için girdi olarak kullanır.
Önek genişletilmiş bir düğüm tablosu oluşturur; bu tablo normalde giriş tablosuyla aynı sayıda kayda sahiptir, ancak buna ek olarak hiyerarşideki her seviye ayrı bir alanda saklanır. Yol alanı bir ağaç yapısında kullanılabilir.
Söz Dizimi:
Hierarchy (NodeID, ParentID, NodeName, [ParentName, [ParentSource, [PathName, [PathDelimiter, Depth]]]])(loadstatement | selectstatement)
Giriş tablosu bir bitişik düğüm tablosu olmalıdır. Bitişik düğüm tabloları, her bir kaydın bir düğüme karşılık geldiği ve ana düğüme bir başvuru içeren bir alana sahip olduğu tablolardır. Böyle bir tabloda düğüm yalnızca bir kayıtta saklanır, ancak düğüm birden fazla alt öğeye sahip olmaya devam edebilir. Tablo, doğal olarak, düğümlerin özniteliklerini tanımlayan ek alanlar içerebilir.
Genellikle, giriş tablosu her bir düğüm için tam olarak bir kayda sahiptir ve böyle bir durumda çıktı tablosu aynı sayıda kaydı içerir. Bununla birlikte, bazen kimi zaman birden fazla ana öğeye sahip düğümler olabilir; yani bir düğüm giriş tablosunda birden fazla kayıtla temsil edilir. Bu durum söz konusuysa, çıktı tablosu giriş tablosundan daha fazla kayda sahip olabilir.
Düğüm kimliği sütununda ana kimliği bulunmayan tüm düğümler (ana kimliği eksik düğümler de dahil) kök olarak kabul edilir. Ayrıca, yalnızca kök düğümle bağlantısı (doğrudan ya da dolaylı) olan düğümler yüklenir ve böylece döngüsel referansların önüne geçilir.
Ana düğüm adını, düğümün yolunu ve düğüm derinliğini içeren ek alanlar oluşturulabilir.
Bağımsız Değişkenler:
Bağımsız Değişken | Açıklama |
---|---|
NodeID | Düğüm kimliğini içeren alanın adı. Bu alan giriş tablosunda bulunmalıdır. |
ParentID | Ana düğümün düğüm kimliğini içeren alanın adı. Bu alan giriş tablosunda bulunmalıdır. |
NodeName | Düğümün adını içeren alanın adı. Bu alan giriş tablosunda bulunmalıdır. |
ParentName | Yeni ParentName alanını adlandırmak için kullanılan dize. Atlandığı takdirde bu alan oluşturulmaz. |
ParentSource | Düğüm yolunu oluşturmak için kullanılan düğümün adını içeren alanın adı. İsteğe bağlı parametre. Atlandığı takdirde NodeName kullanılır. |
PathName | Kökten düğüme giden yolu içeren yeni Path alanını adlandırmak için kullanılan dize. İsteğe bağlı parametre. Atlandığı takdirde bu alan oluşturulmaz. |
PathDelimiter | Yeni Path alanında ayırıcı olarak kullanılan dize. İsteğe bağlı parametre. Atlanırsa '/' kullanılır. |
Depth | Hiyerarşideki düğümün derinliğini içeren yeni Depth alanını adlandırmak için kullanılan dize. İsteğe bağlı parametre. Atlandığı takdirde bu alan oluşturulmaz. |
Örnek:
Hierarchy(NodeID, ParentID, NodeName, ParentName, NodeName, PathName, '\', Depth) LOAD * inline [
NodeID, ParentID, NodeName
1, 4, London
2, 3, Munich
3, 5, Germany
4, 5, UK
5, , Europe
];
Sonuç:
NodeID | NodeName | ParentID | ParentName | NodeName1 | NodeName2 | NodeName3 | PathName | Depth |
---|---|---|---|---|---|---|---|---|
5 | Europe | - | Europe | - | - | Europe | 1 | |
3 | Germany | 5 | Europe | Europe | Germany | - | Europe\Germany | 2 |
2 | Munich | 3 | Germany | Europe | Germany | Munich | Europe\Germany\Munich | 3 |
4 | UK | 5 | Europe | Europe | UK | - | Europe\UK | 2 |
1 | London | 4 | UK | Europe | UK | London | Europe\UK\London | 3 |