Ana içeriğe geç Tamamlayıcı 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.

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 yapısı normal bir Load deyimi olarak; ancak eski kayıtları ve silinmek üzere işaretlenmiş kayıtları kaldırma ek işlevselliği ile çalışır. Load deyiminin ilk alanı işlemle ilgili bilgileri içermelidir: 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 ön eki belirtilebilir. Hedef tablo belirlenmezse, Merge LOAD yapısının sonucu yeni bir tabloda saklanı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şiklikleri içeriyorsa, SequenceNoVar parametresi, giriş verilerinin miktarını sınırlamak için bir Where cümlesinde kullanılabilir. Merge LOAD daha sonra yalnızca SequenceNoField alanının şundan büyük olduğu kayıtları yüklemek için yapılabilir: SequenceNoVar. İşlem tamamlandığında Merge LOAD, SequenceNoVar değişkenine maksimum değeri SequenceNoField alanında görülen yeni bir değer atar.

İşlemler

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

Insert: Merge LOAD içinde eksik buna karşın 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.

Bilgi notuMerge LOAD işlemi joker karakterleri olan kayıtlarda; örneğin tüm değerleri göstermek yıldız içeren bir Section Access tablosunda kullanılamaz.

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, bize bildirin, düzeltelim!