Ana içeriğe geç

Birleştirme

Merge öneki, yüklenen tablonun başka bir tabloyla birleştirilmesi gerektiğini belirtmek için koddaki bir LOAD veya SELECT deyimine eklenebilir. Bu ayrıca, bu deyimin bir kısmi yeniden yüklemede çalıştırılması gerektiğini belirtir.

Tipik kullanım durumu, bir değişiklik günlüğü yüklediğiniz ve bunu kullanarak inserts, updates ve deletes öğesini var olan bir tabloya uygulamak istediğiniz zamanlardır.

Bilgi notuKısmi yeniden yüklemenin düzgün çalışması için, kısmi yeniden yükleme tetiklenmeden önce uygulamanın verilerle açılması gerekir.

Yeniden Yükle düğmesini kullanarak kısmi yeniden yükleme gerçekleştirin. Daha fazla bilgi için bkz. Düğme. Qlik Engine JSON API öğesini de kullanabilirsiniz.

Zamanlamaya göre kısmi yeniden yükleme gerçekleştirmek için bir uygulamada Daha fazla öğesine tıklayın ve ardından Yeniden yüklemeyi zamanla öğesini seçin. Açılan diyalog penceresinde Kısmi yeniden yükleme'yi etkinleştirin.

Söz Dizimi:  

Merge [only] [(SequenceNoField [, SequenceNoVar])] On ListOfKeys [Concatenate [(TableName)]] (loadstatement | selectstatement)

Bağımsız Değişkenler:  

Bağımsız Değişkenler
Bağımsız Değişken Açıklama
only Deyimin sadece kısmi yeniden yüklemeler sırasında yürütülmesi gerektiğini belirten isteğe bağlı bir niteleyici. Deyim, normal (kısmi olmayan) yeniden yüklemelerde göz ardı edilir.
SequenceNoField Bir zaman damgası içeren alanın adı veya işlemlerin sırasını tanımlayan bir sıra numarası.
SequenceNoVar

Birleştirilmekte olan tablonun SequenceNoField öğesi için maksimum değerin atandığı değişkenin adı.

ListOfKeys Birincil anahtarı belirten, virgülle ayrılmış alan adları listesi.
Operation Yükleme deyiminin ilk alanı işlemi bir metin dizesi olarak içermelidir: "Insert", "Update" veya "Delete". "i", "u" ve "d" de ayrıca kabul edilir.

Genel işlevsellik

Normal (kısmi olmayan) bir yeniden yükleme sırasında Merge LOAD oluşturma normal bir Load deyimi olarak çalışır, ancak ek işlev olarak eski ve yürürlükten kalkmış veya silinmek üzere işaretlenmiş kayıtlar da kaldırılır. Load deyiminin ilk alanı işlemle ilgili bilgileri içermelidir:Load Insert, Update veya Delete.

Yüklenen her kayıt için kayıt tanımlayıcısı önceden yüklenen kayıtlarla karşılaştırılır ve yalnızca en son kayıt (sıra numarasına göre) saklanır. En son kayıt Delete ile işaretlenmişse hiçbiri saklanmaz.

Hedef tablo

Hangi tablonun değiştirileceği alan kümesi tarafından belirlenir. Aynı alan kümesine sahip (işlem olan ilk alan dışında) bir tablo zaten mevcutsa, değiştirilecek olan bu tablodur. Alternatif olarak tabloyu belirtmek için bir Concatenate öneki kullanılabilir. Hedef tablo belirlenmediyse Merge LOAD oluşturmanın sonucu yeni bir tabloda depolanır.

Concatenate ön eki kullanılırsa, ortaya çıkan tabloda mevcut tablo ile Merge işleminin girdisinin bileşimine karşılık gelen bir alan kümesi olur. Bu nedenle hedef tabloda Merge işleminin girdisi olarak kullanılan değişiklik günlüğünden daha fazla alan olabilir.

Kısmi bir yeniden yükleme tam bir yeniden yükleme ile aynı şeyi yapar. Tek fark kısmi bir yeniden yüklemenin seyrek olarak yeni bir tablo oluşturmasıdır. Only yan tümcesi kullanılmadığı sürece önceki komut dosyası yürütmedeki alan kümesine sahip olan bir hedef tablo her zaman mevcuttur.

Sıra numarası

Yüklenen değişiklik günlüğü birikmiş bir günlükse, yani zaten yüklenmiş olan değişiklikler içeriyorsa giriş verilerinin miktarını sınırlamak için bir Where cümlesinde SequenceNoVar parametresi kullanılabilir. Merge LOAD daha sonra yalnızca SequenceNoField alanının SequenceNoVar değerinden büyük olduğu kayıtları yüklemek için kullanılır. İşlem tamamlandığında Merge LOAD, SequenceNoVar değişkenine SequenceNoField alanında görülen maksimum değerle yeni bir değer atar.

İşlemler

Merge LOAD işleminde hedef tablodan daha az alan olabilir. Eksik alanlar farklı işlemlerde farklı şekilde işlenir:

Insert: Merge LOAD içinde eksik, ancak hedef tabloda mevcut olan alanlar hedef tabloda NULL değerini alır.

Delete: Eksik alanlar sonucu etkilemez. İlgili kayıtlar yine de silinir.

Update: Merge LOAD içinde listelenen alanlar hedef tabloda güncellenir. Eksik alanlar değiştirilmez. Bu, aşağıdaki iki deyimin aynı olmadığı anlamına gelir:

  • Merge on Key Concatenate Load 'U' as Operation, Key, F1, Null() as F2 From ...;
  • Merge on Key Concatenate Load 'U' as Operation, Key, F1 From ...;

Birinci deyim listelenen kayıtları günceller ve F2 değerini NULL ile değiştirir. İkincisi F2 değerini değiştirmez; bunun yerine değerleri hedef tabloda bırakır.