Ana içeriğe geç

Join ve Keep ile tabloları birleştirme

BU SAYFADA

Join ve Keep ile tabloları birleştirme

Join, iki tabloyu kullanan ve bunları bir tabloda birleştiren bir işlemidir. Sonuçta ortaya çıkan tablonun kayıtları, orijinal tablolardaki kayıtların birleşimleridir; bu genellikle sonuçta ortaya çıkan tablodaki herhangi bir birleşimin bir veya birkaç ortak alan için ortak bir değere sahip olması şeklinde, yani bir natural join ile, gerçekleştirilir. Qlik Sense uygulamasında, join işlemleri kod içinde gerçekleştirilebilir ve mantıksal tablolar oluşturur.

Zaten kodda bulunan tabloları birleştirmek mümkündür. Bu durumda Qlik Sense mantığı ayrı tabloları görmek yerine, tek bir dahili tablo olan birleştirme sonucunu görür. Bazı durumlarda bu gereklidir; ancak bazı dezavantajları da mevcuttur:

  • Yüklü tablolar genellikle daha büyük hale gelir ve Qlik Sense daha yavaş çalışır.
  • Bazı bilgiler kaybedilebilir: ilk tablodaki sıklık (kayıtların sayısı) artık kullanılamayabilir.

Tablolar Qlik Sense uygulamasında depolanmadan önce iki tablodan birini veya her ikisini tablo verilerinin kesişimine azaltma etkisine sahip olan Keep fonksiyonu, açık birleştirmelerin kullanılması gereken durumların sayısını azaltmak üzere tasarlanmıştır.

Not: Bu belgede, birleştirme terimi genellikle dahili tablolar oluşturulmadan önce gerçekleştirilen birleştirmeler için kullanılmaktadır. Ancak, dahili tablolar oluşturulduktan sonra gerçekleştirilen ilişkilendirme temelde bir birleştirmedir.

Join

Bir birleştirme gerçekleştirmenin en basit yolu, dahili tabloyu başka bir adlandırılmış tabloyla veya önceden oluşturulan son tabloyla birleştiren Join önekini kod içinde kullanmaktır. Birleştirme, iki tabloya ait değerlerin tüm olası bileşimlerini oluşturan bir dış birleştirme olur.

Example:  

LOAD a, b, c from table1.csv; join LOAD a, d from table2.csv;

Sonuçta ortaya çıkan dahili tablo a, b, c ve d alanlarına sahiptir. Kayıtların sayısı, iki tablonun alan değerlerine bağlı olarak değişiklik gösterir.

Not: Üzerinde birleştirme gerçekleştirilecek alanların adları tam olarak aynı olmalıdır. Üzerinde birleştirme gerçekleştirilecek alanların sayısı rastgeledir. Genellikle tabloların bir veya daha az ortak alanı olmalıdır. Hiçbir ortak alan olmaması, tabloların kartezyen ürününü oluşturur. Tüm alanların ortak olması da mümkündür, ancak genellikle bir anlam ifade etmez. Join deyiminde önceden yüklenmiş bir tablonun tablo adı belirtilmedikçe, Join öneki önceden oluşturulan son tabloyu kullanır. Bu nedenle, iki deyimin sıralaması rastgele değildir.

Daha fazla bilgi için bkz. Join.

Join kullanma

Qlik Sense kod dilinde açık Join öneki, iki tablonun tam birleştirmesini gerçekleştirir. Sonuç bir tablodur. Bu tarz birleştirmeler çok büyük tabloların ortaya çıkmasına neden olabilir.

  1. Gelişmiş Kodlama Eğitimi uygulamasını açın.
  2. Veri yükleme düzenleyicisi'ne yeni bir kod bölümü ekleyin.
  3. Transactions bölümünü çağırın.
  4. Sağ menüdeki AttachedFiles altında Veri seç'e tıklayın.

  5. Karşıya yükleyin ve ardından Transactions.csv öğesini seçin.
  6. İpucu: Alan adları altında, veri yüklerken tablo alanlarının adlarını dahil etmek için Eklenmiş alan adları'nın seçildiğinden emin olun.
  7. Veri seçme kaynağı: penceresinde Kod yerleştir'e tıklayın.
  8. Karşıya yükleyin ve ardından Salesman.xlsx öğesini seçin.
  9. Veri seçme kaynağı: penceresinde Kod yerleştir'e tıklayın.
  10. Kodunuz şöyle görünmelidir:

    LOAD "Transaction ID", "Salesman ID", Product, "Serial No", "ID Customer", "List Price", "Gross Margin" FROM [lib://AttachedFiles/Transactions.csv] (txt, codepage is 28591, embedded labels, delimiter is ',', msq); LOAD "Salesman ID", Salesman, "Distributor ID" FROM [lib://AttachedFiles/Salesman.xlsx] (ooxml, embedded labels, table is Salesman);

  11. Verileri yükle'ye tıklayın.
  12. Veri modeli görüntüleyicisi'ni açın. Veri modeli artık şöyle görünür:
  13. Veri modeli: Transactions, Salesman ve Product tabloları
    Data model, Transactions, Salesman, and Product tables.

Ancak Transactions ve Salesman tablolarının ayrılması istenen sonucu vermeyebilir. İki tablonun birleştirilmesi daha iyi olabilir.

  1. Birleştirilmiş tabloya bir ad vermek için ilk LOAD deyiminin üzerine şu satırı ekleyin:
  2. Transactions:

  3. Transactions ve Salesman tablolarını birleştirmek için ikinci LOAD deyiminin üzerine şu satırı ekleyin:
  4. Join(Transactions)

    Kodunuz şöyle görünmelidir:

    Transactions:
    LOAD
        "Transaction ID",
        "Salesman ID",
        Product,
        "Serial No",
        "ID Customer",
        "List Price",
        "Gross Margin"
    FROM [lib://AttachedFiles/Transactions.csv]
    (txt, codepage is 28591, embedded labels, delimiter is ',', msq);
    
    Join(Transactions)
    LOAD
        "Salesman ID",
        Salesman,
        "Distributor ID"
    FROM [lib://AttachedFiles/Salesman.xlsx]
    (ooxml, embedded labels, table is Salesman);

  5. Verileri yükle'ye tıklayın.
  6. Veri modeli görüntüleyicisi'ni açın. Veri modeli artık şöyle görünür:
  7. Veri modeli: Transactions ve Product tabloları
    Data model following Join.

    Transactions ve Salesman tablolarının tüm alanları artık tek bir Transactions tablosunda birleştirilmiştir.

Not: Join fonksiyonunun ne zaman kullanılacağı hakkında daha fazla bilgi almak için Qlik Community bölümündeki blog gönderilerine göz atın: To Join or not to Join (Birleştirmek ya da Birleştirmemek), Mapping as an Alternative to Joining (Birleştirmeye Alternatif olarak Eşleme). Davranışlar QlikView bağlamında açıklanmıştır. Fakat kullanılan mantık, Qlik Sense için de geçerlidir.

Keep

Qlik Sense uygulamasının ana özelliklerinden biri, tabloları birleştirmek yerine tablolar arasında ilişkilendirmeler gerçekleştirmektir; bu da bellekteki alanı azaltır, hızı artırır ve büyük ölçüde esneklik sağlar. Keep fonksiyonu, açık birleştirmelerin kullanılması gereken durumların sayısını azaltmak üzere tasarlanmıştır.

İki LOAD veya SELECT deyimi arasındaki Keep öneki, tablolar Qlik Sense ortamında depolanmadan önce iki tablodan birini veya her ikisini tablo verilerinin kesişimine azaltır. Keep önekinin öncesinde her zaman Inner, Left veyaRight anahtar sözcüklerinden biri gelmelidir. Tablolardan kayıt seçimi, karşılık gelen birleştirme ile aynı şekilde gerçekleştirilir. Ancak, iki tablo birleştirilmez ve Qlik Sense içinde iki ayrı ayrı adlandırılmış tablo olarak depolanır.

Daha fazla bilgi için bkz. Keep.

Inner

Veri kod dosyasındaki Join ve Keep öneklerinden önce Inner öneki gelebilir.

Join öğesinden önce kullanılması durumunda, iki tablo arasındaki birleştirmenin iç birleştirme olması gerektiğini belirtir. Sonuç olarak elde edilen tablo yalnızca her iki tarafa ait tam veri kümesiyle iki tablo arasındaki bileşimleri içerir.

Keep öğesinden önce kullanılması durumunda, iki tablonun Qlik Sense içinde depolanmadan önce ortak kesişimlerine azaltılması gerektiğini belirtir.

Example:  

Bu örneklerde Table1 ve Table2 kaynak tablolarını kullanıyoruz.

Bunların yalnızca örnek olduğunu unutmayın. Qlik Sense içinde tamamlanması gereken başka bir alıştırma yoktur.

Table 1
A B
1 aa
2 cc
3 ee
Table2
A C
1 xx
4 yy

Inner Join

İlk olarak tablolar üzerinde Inner Join yapıyoruz ve her iki tablodan birleştirilen verilerle yalnızca bir satır (her iki tabloda da bulunan tek kayıt) içeren VTable ortaya çıkıyor.

VTable: SELECT * from Table1; inner join SELECT * from Table2;

VTable
A B C
1 aa xx

Inner Keep

Bunun yerine Inner Keep uygularsanız hala iki tablonuz olur. İki tablo, A ortak alanı aracılığıyla ilişkilendirilir.

VTab1: SELECT * from Table1; VTab2: inner keep SELECT * from Table2;

VTab1
A B
1 aa
VTab2
A C
1 xx

Daha fazla bilgi için bkz. Inner.

Left

Veri kod dosyasındaki Join ve Keep öneklerinden önce left öneki gelebilir.

Join öğesinden önce kullanılması durumunda, iki tablo arasındaki birleştirmenin sol birleştirme olması gerektiğini belirtir. Sonuç olarak elde edilen tablo yalnızca birinci tabloya ait tam veri kümesiyle iki tablo arasındaki bileşimleri içerir.

Keep öğesinden önce kullanılması durumunda, ikinci tablonun Qlik Sense içinde depolanmadan önce birinci tabloyla ortak kesişimine azaltılması gerektiğini belirtir.

Example:  

Bu örneklerde Table1 ve Table2 kaynak tablolarını kullanıyoruz.

Table1
A B
1 aa
2 cc
3 ee
Table2
A C
1 xx
4 yy

İlk olarak tablolar üzerinde bir Left Join yapıyoruz ve Table1'den gelen tüm satırları, Table2 içindeki eşleşen satırlardan gelen alanlarla birleştirilmiş olarak içeren VTable ortaya çıkıyor.

VTable: SELECT * from Table1; left join SELECT * from Table2;

VTable
A B C
1 aa xx
2 cc -
3 ee -

Bunun yerine Left Keep uygularsanız hala iki tablonuz olur. İki tablo, A ortak alanı aracılığıyla ilişkilendirilir.

VTab1: SELECT * from Table1; VTab2: left keep SELECT * from Table2;

VTab1
A B
1 aa
2 cc
3 ee
VTab2
A C
1 xx

Daha fazla bilgi için bkz. Left.

Right

Qlik Sense kod dilindeki Join ve Keep öneklerinden önce right öneki gelebilir.

Join öğesinden önce kullanılması durumunda, iki tablo arasındaki birleştirmenin Sağ Birleştirme olması gerektiğini belirtir. Sonuç olarak elde edilen tablo yalnızca ikinci tabloya ait tam veri kümesiyle iki tablo arasındaki bileşimleri içerir.

Keep öğesinden önce kullanılması durumunda, birinci tablonun Qlik Sense içinde depolanmadan önce ikinci tabloyla ortak kesişimine azaltılması gerektiğini belirtir.

Example:  

Bu örneklerde Table1 ve Table2 kaynak tablolarını kullanıyoruz.

Table1
A B
1 aa
2 cc
3 ee
Table2
A C
1 xx
4 yy

İlk olarak tablolar üzerinde bir Right Join yapıyoruz ve Table2'den gelen tüm satırları, Table1 içindeki eşleşen satırlardan gelen alanlarla birleştirilmiş olarak içeren VTable ortaya çıkıyor.

VTable: SELECT * from Table1; right join SELECT * from Table2;

VTable
A B C
1 aa xx
4 - yy

Bunun yerine Right Keep uygularsanız hala iki tablonuz olur. İki tablo, A ortak alanı aracılığıyla ilişkilendirilir.

VTab1: SELECT * from Table1; VTab2: right keep SELECT * from Table2;

VTab1
A B
1 aa
VTab2
A C
1 xx
4 yy

Daha fazla bilgi için bkz. Right.