Join ve Keep ile tabloları birleştirme | Qlik Cloud Yardımı
Ana içeriğe geç Tamamlayıcı içeriğe geç

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.

Bilgi notuBu 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.

Bir SQL SELECT ifadesi içindeki birleştirmeler

Bazı ODBC sürücüleriyle SELECT ifadesi içinde birleştirme yapmak mümkündür. Bu, Join önekini kullanarak birleştirme yapmaya neredeyse eşdeğerdir.

Ancak çoğu ODBC sürücüsü tam (çift yönlü) dış birleştirme yapamaz. Yalnızca sol veya sağ dış birleştirme yapabilirler. Sol (sağ) dış birleştirme, yalnızca birleştirme anahtarının sol (sağ) tabloda bulunduğu kombinasyonları içerir. Tam dış birleştirme tüm kombinasyonları içerir. Qlik Sense otomatik olarak tam dış birleştirme yapar.

Ayrıca, SELECT ifadelerinde birleştirme yapmak, Qlik Sense içinde birleştirme yapmaktan çok daha karmaşıktır.

SELECT DISTINCTROW

[Order Details].ProductID, [Order Details].

UnitPrice, Orders.OrderID, Orders.OrderDate, Orders.CustomerID

FROM Orders

RIGHT JOIN [Order Details] ON Orders.OrderID = [Order Details].OrderID;

Bu SELECT ifadesi, hayali bir şirkete ait siparişleri içeren bir tabloyu, sipariş ayrıntılarını içeren bir tabloyla birleştirir. Bu bir sağ dış birleştirmedir; yani OrderDetails tablosunun tüm kayıtları, Orders tablosunda bulunmayan bir OrderID'ye sahip olanlar da dahil olmak üzere dahil edilir. Ancak Orders tablosunda bulunup OrderDetails tablosunda bulunmayan siparişler dahil edilmez.

Join

Birleştirme yapmanın en basit yolu, komut dosyasındaki Join önekini kullanmaktır; bu, dahili tabloyu adlandırılmış başka bir tabloyla veya daha önce oluşturulmuş son tabloyla birleştirir. Birleştirme, iki tablodaki değerlerin olası tüm kombinasyonlarını oluşturan bir dış birleştirme olacaktır.

LOAD a, b, c from table1.csv;

join LOAD a, d from table2.csv;

Ortaya çıkan dahili tablo a, b, c ve d alanlarına sahiptir. Kayıt sayısı, iki tablonun alan değerlerine bağlı olarak değişir.

Bilgi notuÜzerinde birleştirme yapılacak alanların adları tamamen aynı olmalıdır. Üzerinde birleştirme yapılacak alanların sayısı isteğe bağlıdır. Genellikle tabloların ortak bir veya birkaç alanı olmalıdır. Ortak alan olmaması, tabloların kartezyen çarpımını oluşturur. Tüm alanların ortak olması da mümkündür, ancak genellikle bir anlam ifade etmez. Join ifadesinde daha önce yüklenmiş bir tablonun adı belirtilmedikçe, Join öneki daha önce oluşturulmuş son tabloyu kullanır. Bu nedenle iki ifadenin sırası rastgele değildir.

Daha fazla bilgi için bkz. Join.

Keep

Veri yükleme komut dosyası içindeki açık Join öneki, iki tablonun tam birleştirmesini gerçekleştirir. Sonuç tek bir tablodur. Çoğu durumda bu tür birleştirmeler çok büyük tablolarla sonuçlanır. Qlik Sense uygulamasının temel özelliklerinden biri, tabloları birleştirmek yerine aralarında ilişkilendirmeler yapabilmesidir; bu da bellekteki alanı azaltır, hızı artırır ve muazzam bir esneklik sağlar. Keep işlevi, açık birleştirmelerin kullanılması gereken durumların sayısını azaltmak için tasarlanmıştır.

İki LOAD veya SELECT ifadesi arasındaki Keep öneki, iki tablodan birini veya her ikisini Qlik Sense içinde depolanmadan önce tablo verilerinin kesişimine indirgeme etkisine sahiptir. Keep önekinden önce her zaman Inner, Left veya Right anahtar sözcüklerinden biri gelmelidir. Tablolardan kayıt seçimi, karşılık gelen bir birleştirmedekiyle aynı şekilde yapılır. Ancak iki tablo birleştirilmez ve Qlik Sense içinde ayrı ayrı adlandırılmış iki tablo olarak depolanır.

Daha fazla bilgi için bkz. Keep.

Inner

Veri yükleme komut dosyasındaki Join ve Keep öneklerinden önce Inner öneki gelebilir.

Join önekinden önce kullanılırsa, iki tablo arasındaki birleştirmenin bir iç birleştirme olması gerektiğini belirtir. Ortaya çıkan tablo, yalnızca her iki taraftan tam bir veri kümesi ile iki tablo arasındaki kombinasyonları içerir.

Keep önekinden önce kullanılırsa, iki tablonun Qlik Sense içinde depolanmadan önce ortak kesişimlerine indirgenmesi gerektiğini belirtir.

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

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

Inner Join

İlk olarak, tablolar üzerinde bir Inner Join gerçekleştiriyoruz; bu, her iki tablodan birleştirilmiş verilerle her iki tabloda da bulunan tek kayıt olan ve yalnızca bir satır içeren VTable ile sonuçlanır.

VTable:

SELECT * from Table1;

inner join SELECT * from Table2;

VTable
A B C
1 aa xx

Inner Keep

Bunun yerine bir Inner Keep gerçekleştirirsek, yine iki tablonuz olur. İki tablo, ortak alan A 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 yükleme komut dosyasındaki Join ve Keep öneklerinden önce left öneki gelebilir.

Join önekinden önce kullanılırsa, iki tablo arasındaki birleştirmenin bir sol birleştirme olması gerektiğini belirtir. Ortaya çıkan tablo, yalnızca ilk tablodan tam bir veri kümesi ile iki tablo arasındaki kombinasyonları içerir.

Keep önekinden önce kullanılırsa, ikinci tablonun Qlik Sense içinde depolanmadan önce ilk tabloyla ortak kesişimine indirgenmesi gerektiğini belirtir.

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

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

İlk olarak, tablolar üzerinde bir Left Join gerçekleştiriyoruz; bu, Table2 içindeki eşleşen satırlardan gelen alanlarla birleştirilmiş olarak Table1 içindeki tüm satırları içeren VTable ile sonuçlanır.

VTable:

SELECT * from Table1;

left join SELECT * from Table2;

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

Bunun yerine bir Left Keep gerçekleştirirsek, yine iki tablonuz olur. İki tablo, ortak alan A 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

Veri yükleme komut dosyasındaki Join ve Keep öneklerinden önce right öneki gelebilir.

Join önekinden önce kullanılırsa, iki tablo arasındaki birleştirmenin bir sağ birleştirme olması gerektiğini belirtir. Ortaya çıkan tablo, yalnızca ikinci tablodan tam bir veri kümesi ile iki tablo arasındaki kombinasyonları içerir.

Keep önekinden önce kullanılırsa, ilk tablonun Qlik Sense içinde depolanmadan önce ikinci tabloyla ortak kesişimine indirgenmesi gerektiğini belirtir.

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

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

İlk olarak, tablolar üzerinde bir Right Join gerçekleştiriyoruz; bu, Table1 içindeki eşleşen satırlardan gelen alanlarla birleştirilmiş olarak Table2 içindeki tüm satırları içeren VTable ile sonuçlanır.

VTable:

SELECT * from Table1;

right join SELECT * from Table2;

VTable
A B C
1 aa xx
4 - yy

Bunun yerine bir Right Keep gerçekleştirirsek, yine iki tablonuz olur. İki tablo, ortak alan A 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.

Bu sayfa size yardımcı oldu mu?

Bu sayfa veya içeriği ile ilgili bir sorun; bir yazım hatası, eksik bir adım veya teknik bir hata bulursanız lütfen bize bildirin!