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, veritabanındaki yeni veya değiştirilmiş kayıtları yüklemeyi tercih edebilirsiniz. Diğer tüm veriler uygulamada zaten kullanılabilir durumdadır. QVD dosyaları kullanılarak yapılan artışlı yükleme, bunu gerçekleştirmenize imkan tanır.
Temel işlem aşağıda açıklanmıştır:
-
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.
-
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.
-
Yeni bir QVD dosyası oluşturun.
Bu, bir sonraki artışlı yükleme işleminizde kullanacağınız dosyadır.
- 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 bk. 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.
Örnek:
Buffer (Incremental) Load * From LogFile.txt (ansi, txt, delimiter is '\t', embedded labels);
Yalnızca ekleme (güncelleme veya silme yok)
Veriler basit bir günlük dosyası dışındaki bir veritabanında bulunuyorsa sona ekleme yaklaşımı işe yaramaz. Ancak sorun yine de minimum miktarda ek çalışmayla çözülebilir. 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.
Örnek:
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.
Örnek:
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.
Örnek:
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