Ana içeriğe geç
Hiyerarşik verileri işleme #Hiyerarşik verileri işleme

BU SAYFADA

Hiyerarşik verileri işleme

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.

  1. Yeni bir uygulama oluşturun ve ona bir ad verin.
  2. Veri yükleme düzenleyicisi'ne yeni bir kod bölümü ekleyin.
  3. Wine bölümünü çağırın.
  4. Sağ menüdeki DataFiles altında Veri seç'e tıklayın.

  5. Karşıya yükleyin ve ardından Winedistricts.txt öğesini seçin.
  6. Veri seçme kaynağı penceresinde, yüklenmemeleri için Lbound ve RBound alanlarının işaretini kaldırın.
  7. Kod ekle'ye tıklayın.
  8. LOAD deyiminin üzerine şunu girin:
  9. 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);			

  10. Verileri yükle'ye tıklayın.
  11. Ortaya çıkan tabloyu görüntülemek için Veri modeli görüntüleyicisi'nin Önizleme bölümünü kullanın.
  12. 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:

    Hierarchy öneki kullanılarak yüklenen örnek veriyi gösteren tablo

    Hiyerarşi öneki kullanılarak yüklenen örnek verileri gösteren tablo.
Bilgi notuHiyerarşiler hakkında daha fazla bilgi almak için Qlik Community bölümündeki blog gönderisine göz atın: Hierarchies (Hiyerarşiler)

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.

  1. Veri yükleme düzenleyicisi'nde Hierarchy deyimini şu şekilde değiştirin:
  2. HierarchyBelongsTo (NodeID, ParentID, NodeName, BelongsToID, BelongsTo)
  1. Verileri yükle'ye tıklayın.
  2. Ortaya çıkan tabloyu görüntülemek için Veri modeli görüntüleyicisi'nin Önizleme bölümünü kullanın.
  3. Ü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:

    HierarchyBelongsTo öneki kullanılarak yüklenen veriyi gösteren tablo

    HierarchyBelongsTo öneki kullanılarak yüklenen verileri gösteren tablo.

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.

Organizasyonel hiyerarşi örneği

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:

Yetkilendirme tablosu
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.

Örnek:  

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.

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;

Bu örnek, aşağıdaki veri modelini oluşturur:

Veri modeli: Authorization, Trees, Fact ve Nodes tabloları

Veri modeli: