Ana içeriğe geç

Birleştirme

BU SAYFADA

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.

Not: Kısmi yeniden yükleme, Qlik Engine JSON API veya Yeniden Yükle düğmesi kullanılarak desteklenir. Yeniden Yükle düğmesi hakkında daha fazla bilgi için bkz. Düğme.

Syntax:  

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

 

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 işlevselliği ile) çalışacaktır. Load ifadesinin 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.

Concatenate öneki kullanılıyorsa veya aynı alan kümesine sahip bir tablo varsa, bu, değiştirilecek ilgili tablo olacaktır. Aksi takdirde, Merge LOAD yapısının sonucu yeni bir tabloda depolanacaktır.

Concatenate Concatenate öneki kullanılırsa, oluşan tabloda Merge girdisi olarak kullanılan değişiklik günlüğünden daha fazla alan olabilir.

Kısmi yeniden yükleme, tam yeniden yükleme ile aynı şeyi yapar. Tek fark, Merge LOAD yapısının asla yeni bir tablo oluşturmamasıdır. Her zaman önceki kod yürütme işleminden, değiştirilecek ilgili bir tablo vardır.

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. Tamamlandıktan sonra, Merge LOAD, SequenceNoVar için SequenceNoField alanında görülen maksimum değere sahip yeni bir değer atayacaktır.

Arguments:  

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. Normal (kısmi olmayan) yeniden yüklemeler sırasında dikkate alınmamalıdır.
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 Load ifadesinin ilk alanı işlemi içermelidir: Insert, Update veya Delete. "i", "u" ve "d" öğesi de kabul edilir.

Example: Veri kod dosyası

Bu örnekte, Persons adlı bir satır içi tablo dört satırla yüklenir. Merge ardından tabloyu şu şekilde değiştirir:

  • Mary, 4 satırını ekler
  • Steven, 3 satırını siler
  • Jake'e 5 sayısını atar

Merge yürütüldükten sonra LastChangeDate değişkeni ChangeDate sütunundaki maksimum değere ayarlanır.

Persons: load * inline [ Name, Number Jake, 3 Jill, 2 Steven, 3 ]; Merge (ChangeDate, LastChangeDate) on Name Concatenate(Persons) LOAD * inline [ Operation, ChangeDate, Name, Number Insert, 1/1/2021, Mary, 4 Delete, 1/1/2021, Steven, Update, 2/1/2021, Jake, 5 ];

Merge yüklemesinden sonra, oluşan tablo şu şekilde görünür:

Resulting table
Name Number
Jake 3
Jill 2
Steven 3

Merge yüklemesinden sonra, tablo şu şekilde görünür:

Resulting table
ChangeDate Name Number
2/1/2021 Jake 5
- Jill 2
1/1/2021 Mary 4

Veriler yüklendiğinde, yapılan işlemler Veri yükleme ilerlemesi iletişim kutusunda gösterilir.

Veri yükleme ilerlemesi iletişim kutusu

Data load progress dialog box.

Example: Veri yükleme komut dosyası - Kısmi yeniden yükleme

Aşağıdaki örnekte, Only bağımsız değişkeni Merge komutunun yalnızca kısmi yeniden yükleme sırasında yürütüleceğini belirtir. Güncellemeler daha önce yakalanan LastChangeDate'e göre filtrelenecektir. Merge tamamlandıktan sonra, LastChangeDate değişkenine, birleştirme sırasında işlenen ChangeDatesütununun maksimum değeri atanacaktır.

Merge Only (ChangeDate, LastChangeDate) on Name Concatenate(Persons) LOAD Operation, ChangeDate, Name, Number from [lib://ChangeFilesFolder/BulkChangesInPersonsTable.csv] (txt) where ChangeDate >= $(LastChangeDate);