Hiyerarşiler, tüm iş zekası çözümlerinin farklı ayrıntı düzeyleri içeren boyutları açıklamak için kullanılan önemli bir parçasıdır. Bazıları basit ve kolay, bazıları ise karmaşıktır ve doğru bir şekilde modellenmesi için üzerlerinde çok fazla çalışmanız gerekir.
Hiyerarşinin en üstünden en altına doğru, üyeler kademeli olarak daha ayrıntılı olur. Örneğin, Pazar, Ülke, Eyalet ve Şehir düzeylerine sahip bir boyutta, Kuzey ve Güney Amerika hiyerarşinin en üstteki düzeyinde, ABD üyesi ikinci düzeyde, California üyesi üçüncü düzeyde ve San Francisco en alttaki düzeyde görünür. California, ABD'ye göre daha geneldir ve San Francisco da California'ya göre daha geneldir.
Hiyerarşilerin ilişkisel modelde depolanması, birden fazla çözümde sık karşılaşılan bir zorluktur. Birkaç yaklaşım bulunur:
- Yatay hiyerarşi
- Bitişiklik liste modeli
- Yol numaralandırma yöntemi
- İçe içe setler modeli
- Üst öğe listesi
Bu dersin amaçları doğrultusunda, hiyerarşiyi doğrudan sorguda kullanılabilen bir formda sunduğu için bir Üst öğe listesi oluşturacağız. Diğer yaklaşımlar hakkında daha fazla bilgi, Qlik Community bölümünde bulunabilir.
Hierarchy öneki
Hierarchy öneki, bitişik düğümler tablosu yükleyen bir LOAD veya SELECT deyiminin önüne yerleştirdiğiniz bir kod komutudur. LOAD deyiminin en az üç alana sahip olması gerekir: Düğüm için benzersiz anahtar olan bir kimlik, üst öğenin referansı ve ad.
Önek, yüklenen bir tabloyu genişletilmiş düğümler tablosuna dönüştürecektir; bu tablo, her hiyerarşi seviyesi için birer tane olmak üzere birçok ek sütuna sahip olur.
Aşağıdakileri yapın:
- Yeni bir uygulama oluşturun ve ona bir ad verin.
- Veri yükleme düzenleyicisi'ne yeni bir kod bölümü ekleyin.
- Wine bölümünü çağırın.
-
Sağ menüdeki DataFiles altında Veri seç'e tıklayın.
- Karşıya yükleyin ve ardından Winedistricts.txt öğesini seçin.
- Veri seçme kaynağı penceresinde, yüklenmemeleri için Lbound ve RBound alanlarının işaretini kaldırın.
- Kod ekle'ye tıklayın.
- LOAD deyiminin üzerine şunu girin:
- Verileri yükle'ye tıklayın.
- Ortaya çıkan tabloyu görüntülemek için Veri modeli görüntüleyicisi'nin Önizleme bölümünü kullanın.
Hierarchy (NodeID, ParentID, NodeName)
Kodunuz şöyle görünmelidir:
Hierarchy (NodeID, ParentID, NodeName) LOAD NodeID, ParentID, NodeName FROM [lib://DataFiles/Winedistricts.txt] (txt, utf8, embedded labels, delimiter is '\t', msq);
Elde edilen genişletilmiş düğümler tablosu, kaynak tablosuyla tam olarak aynı sayıda kayda sahiptir: Düğüm başına bir. Genişletilmiş düğümler tablosu, ilişkisel modelde bir hiyerarşiyi analiz etmeye yönelik birçok gereksinimi karşıladığı için çok kullanışlıdır:
- Tüm düğüm adları, aramalarda kullanılabilmeleri için tek ve aynı sütunda yer alır.
- Ayrıca, farklı düğüm düzeylerinin her biri tek bir alana, başka bir deyişle detaya inme gruplarında veya pivot tablolarda boyut olarak kullanılabilen alanlara genişletilmiştir.
- Ayrıca, farklı düğüm düzeylerinin her biri tek bir alana, yani detaya inme gruplarında kullanılabilen alanlara genişletilmiştir.
- Düğüm için benzersiz olan ve sağ taraftaki tüm üst öğeleri listeleyen bir yolu içerecek şekilde ayarlanabilir.
- Düğümün derinliğini, yani köke mesafesini içerecek şekilde de ayarlanabilir.
Elde edilen tablo şöyle görünür:
HierarchyBelongsTo öneki
Hierarchy öneki gibi, HierarchyBelongsTo öneki de bitişik düğümler tablosu yükleyen bir LOAD veya SELECT deyiminin önüne yerleştirdiğiniz bir kod komutudur.
Burada da LOAD deyiminin en az üç alana sahip olması gerekir: Düğüm için benzersiz anahtar olan bir kimlik, üst öğenin referansı ve ad. Önek, yüklenen tabloyu üst öğe tablosuna, yani ayrı bir kayıt olarak listelenen her üst öğe ve alt öğe kombinasyonuna sahip bir tabloya dönüştürecektir. Bu nedenle, belirli bir düğümün tüm üst öğelerini ve alt öğelerini bulmak çok kolaydır.
Aşağıdakileri yapın:
- Veri yükleme düzenleyicisi'nde Hierarchy deyimini şu şekilde değiştirin:
HierarchyBelongsTo (NodeID, ParentID, NodeName, BelongsToID, BelongsTo)
- Verileri yükle'ye tıklayın.
- Ortaya çıkan tabloyu görüntülemek için Veri modeli görüntüleyicisi'nin Önizleme bölümünü kullanın.
Üst öğe tablosu, ilişkisel modelde bir hiyerarşiyi analiz etmeye yönelik birçok gereksinimi karşılar:
- Düğüm kimliği tekli düğümleri temsil ediyorsa, üst kimlik hiyerarşinin tüm ağaçlarını ve alt ağaçlarını temsil eder.
- Tüm düğüm adları, hem düğümler hem de ağaçlar olarak rol alır ve her iki rol de aramalar için kullanılabilir.
- Düğüm derinliği ve kök ile alt ağaç arasındaki mesafe olan üst öğe derinliği arasındaki derinlik farkını içerecek şekilde ayarlanabilir.
Elde edilen tablo şöyle görünür:
Yetkilendirme
Bir hiyerarşinin yetkilendirme için kullanılması yaygın bir durumdur. Bir örneği organizasyonel hiyerarşidir. Her yönetici, tüm alt departmanlar da dahil olmak üzere kendi departmanlarına ilişkin her şeyi görme hakkına sahiptir. Ancak diğer departmanları görme hakkına sahip olmamaları gerekir.
Bu, farklı insanların organizasyonun farklı alt ağaçlarını görmesine izin verileceği anlamına gelir. Yetkilendirme tablosu şöyle görünebilir:
|ACCESS||NTNAME||PERSON||POSITION||PERMISSIONS|
|USER||ACME\JRL||John||CPO||HR|
|USER||ACME\CAH||Carol||CEO||CEO|
|KULLANICI||ACME\JER||James||Director Engineering||Engineering|
|USER||ACME\DBK||Diana||CFO||Finance|
|USER||ACME\RNL||Bob||COO||Sales|
|USER||ACME\LFD||Larry||CTO||Ürün|
Bu durumda, Carol'ın CEO ve alt departmanlarla ilgili her şeyi görmesine izin verilecek; Larry'nin Product organizasyonunu görmesine izin verilecek ve James'in yalnızca Engineering organizasyonunu görmesine izin verilecektir.
Example:
Hiyerarşi genellikle bitişik düğümler tablosunda depolanır. Bu örnekte, sorunu çözmek için HierarchyBelongsTo kullanarak bitişik düğümler tablosunu yükleyip Tree üst öğe alanını adlandırabilirsiniz.
Section Access kullanmak istiyorsanız Tree alanının büyük harfli bir kopyasını yüklemeniz ve bu yeni PERMISSIONS alanını çağırmanız gerekir. Son olarak, yetkilendirme tablosunu yüklemeniz gerekir. Bu son iki adım şu kod satırı kullanılarak gerçekleştirilir. TempTrees tablosunun HierarchyBelongsTo deyimi tarafından oluşturulan bir tablo olduğunu unutmayın.
Bunun yalnızca bir örnek olduğunu unutmayın. Qlik Sense içinde tamamlanması gereken başka bir alıştırma yoktur.
Bu örnek, aşağıdaki veri modelini oluşturur: