Yeni ve güncellenmiş kayıtları artışlı yükleme ile yükleme

Uygulamanız sürekli olarak güncellenen veri kaynaklarından çok sayıda veri içeriyorsa, tüm veri kümesinin yeniden yüklenmesi çok zaman alabilir. Bu durumda, yalnızca veritabanındaki yeni veya değiştirilmiş kayıtları yüklersiniz, diğer tüm veriler uygulamada zaten kullanılabilir durumdadır. QVD dosyaları kullanılarak artışlı yükleme, bunu gerçekleştirmenize imkan tanır.

Temel işlem aşağıda açıklanmıştır:

  1. Veritabanı kaynak tablosundan yeni veya güncellenmiş verileri yükleyin.

    Bu yavaş bir işlemdir, ancak yalnızca sınırlı sayıda kayıt yüklenir.

  2. Zaten QVD dosyasındaki uygulamada kullanılabilen verileri yükleyin.

    Çoğu kayıt yüklenir, ancak bu çok daha hızlı bir işlemdir.

  3. Yeni bir QVD dosyası oluşturun.

    Bu, bir sonraki artışlı yükleme işleminizde kullanacağınız dosyadır.

  4. Yüklenen her tablo için yordamı yineleyin.

Aşağıdaki örnekler, artışlı yüklemenin kullanıldığı senaryoları göstermektedir. Ancak, kaynak veritabanı yapısı ve çalışma yöntemine bağlı olarak daha karmaşık bir çözüm gerekebilir.

  • Yalnızca sona ekleme (genellikle günlük dosyaları için kullanılır)
  • Yalnızca ekleme (güncelleme veya silme yok)
  • Ekleme ve güncelleme (silme yok)
  • Ekleme, güncelleme ve silme

QVD dosyalarını optimize edilmiş modda veya standart modda okuyabilirsiniz. (Kullanılan yöntem, işlemin karmaşıklığına bağlı olarak Qlik Sense altyapısı tarafından otomatik olarak seçilir.) Optimize mod, standart moddan yaklaşık 10 kat daha hızlıdır veya veritabanının olağan şekilde yüklenmesinden yaklaşık olarak 100 kat daha hızlıdır.

Daha fazla bilgi için bkz. QVD dosyalarıyla çalışma.

Yalnızca sona ekleme

En basit durum, günlük dosyalarını içeren durumdur; bunlar, kayıtların yalnızca sona eklendiği ve asla silinmediği dosyalardır. Aşağıdaki koşullar geçerlidir:

  • Veritabanı bir metin dosyası (ODBC, OLE DB veya diğer veritabanları desteklenmez) barındırılan bir günlük dosyası (veya kayıtların sona eklendiği, ancak eklenmediği veya silinmediği diğer bir dosya) olmalıdır.

  • Qlik Sense, önceden okunan kayıtları takip eder ve yalnızca dosyanın sonuna eklenen kayıtları yükler.

Example:  

Buffer (Incremental) Load * From LogFile.txt (ansi, txt, delimiter is '\t', embedded labels);

Yalnızca ekleme (güncelleme veya silme yok)

Aşağıdaki koşullar geçerlidir:

  • Veri kaynağı herhangi bir veritabanı olabilir.

  • Qlik Sense, son kod yürütme işleminden sonra veritabanına eklenen kayıtları yükler.

  • Qlik Sense uygulamasının yeni kayıtları tanıması için bir ModificationTime alanı (veya benzeri) gereklidir.

Example:  

QV_Table:

SQL SELECT PrimaryKey, X, Y FROM DB_TABLE

WHERE ModificationTime >= #$(LastExecTime)#

AND ModificationTime < #$(BeginningThisExecTime)#;

 

Concatenate LOAD PrimaryKey, X, Y FROM File.QVD;

STORE QV_Table INTO File.QVD;

SQL WHERE cümlesindeki kare işaretleri bir tarihin başlangıcını ve sonunu tanımlar. Veritabanınıza yönelik doğru tarih söz dizimi için veritabanı kılavuzunuza bakın.

Ekleme ve güncelleme (silme yok)

Sıradaki durum, kayıtlara önceden yüklenmiş verilerin, kod yürütme işlemleri arasında değişmesi durumunda uygulanabilir. Aşağıdaki koşullar geçerlidir:

  • Veri kaynağı herhangi bir veritabanı olabilir.

  • Qlik Sense, son kod yürütme işleminden sonra veritabanına eklenen veya veritabanında güncellenen kayıtları yükler.

  • Qlik Sense uygulamasının yeni kayıtları tanıması için bir ModificationTime alanı (veya benzeri) gereklidir.

  • Qlik Sense uygulamasının QVD dosyasından güncellenmiş kayıtları ayırması için bir birincil anahtar alan gereklidir.

  • Bu çözüm, QVD dosyasının okunmasını, yine de veritabanının tamamını yüklemekten önemli ölçüde daha hızlı olan standart moda (optimize yerine) zorlar.

Example:  

QV_Table:

SQL SELECT PrimaryKey, X, Y FROM DB_TABLE

WHERE ModificationTime >= #$(LastExecTime)#;

 

Concatenate LOAD PrimaryKey, X, Y FROM File.QVD

WHERE NOT Exists(PrimaryKey);

 

STORE QV_Table INTO File.QVD;

Ekleme, güncelleme ve silme

Ele alması en zor olan durum, kayıtların kod yürütme işlemleri arasında kaynak veritabanından gerçekten silindiği durumdur. Aşağıdaki koşullar geçerlidir:

  • Veri kaynağı herhangi bir veritabanı olabilir.

  • Qlik Sense, son kod yürütme işleminden sonra veritabanına eklenen veya veritabanında güncellenen kayıtları yükler.

  • Qlik Sense, son kod yürütme işleminden sonra veritabanından silinen kayıtları kaldırır.

  • Qlik Sense uygulamasının yeni kayıtları tanıması için bir ModificationTime alanı (veya benzeri) gereklidir.

  • Qlik Sense uygulamasının QVD dosyasından güncellenmiş kayıtları ayırması için bir birincil anahtar alan gereklidir.

  • Bu çözüm, QVD dosyasının okunmasını, yine de veritabanının tamamını yüklemekten önemli ölçüde daha hızlı olan standart moda (optimize yerine) zorlar.

Example:  

Let ThisExecTime = Now( );

 

QV_Table:

SQL SELECT PrimaryKey, X, Y FROM DB_TABLE

WHERE ModificationTime >= #$(LastExecTime)#

AND ModificationTime < #$(ThisExecTime)#;

 

Concatenate LOAD PrimaryKey, X, Y FROM File.QVD

WHERE NOT EXISTS(PrimaryKey);

 

Inner Join SQL SELECT PrimaryKey FROM DB_TABLE;

 

If ScriptErrorCount = 0 then

STORE QV_Table INTO File.QVD;

Let LastExecTime = ThisExecTime;

End If