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.

Syntax:  

Hierarchy (NodeID, ParentID, NodeName, [ParentName], [PathSource], [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 çıkış 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, çıkış 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.

Arguments:  

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.

Example:  

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