QlikWorld 2020 Global Konferans. Verilerinizden en iyi şekilde nasıl yararlanacağınızı keşfetmek için bize katılın. Fırsatı kaçırmayın. Şimdi kaydolun ve indirimden yararlanın.

Artışlı yükleme için QVD dosyalarını kullanma

Artışlı yükleme, veritabanlarına ilişkin oldukça yaygın bir görevdir. Veritabanlarından yalnızca yeni veya değiştirilmiş kayıtların yüklenmesi olarak tanımlanır. Tüm diğer veriler bir şekilde zaten kullanılabilir olmalıdır. QVD dosyaları ile, çoğu durumda artışlı yükleme gerçekleştirmek mümkündür.

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

1. Veritabanı tablosundan yeni verileri yükleyin (yavaş bir işlemdir, ancak sınırlı sayıda kayıt yükler).

2. QVD dosyasından eski verileri yükleyin (çok sayıda kayıt yükler, ancak çok daha hızlı bir işlemdir).

3. Yeni bir QVD dosyası oluşturun.

4. Yüklenen her tablo için aşamayı yineleyin.

Gerçek çözümün karmaşıklığı, kaynak veritabanının yapısına bağlıdır; ancak aşağıdaki temel durumlar tanımlanabilir:

1) Durum 1: Yalnızca Sona Ekleme (normalde günlük dosyaları)

2) Durum 2: Yalnızca Ekleme (Güncelleştirme veya Silme Yok)

3) Durum 3: Ekleme ve Güncelleştirme (Silme Yok)

4) Durum 4: Ekleme, Güncelleştirme ve Silme

Aşağıda bu durumlardan her birine yönelik olarak anahatlarıyla belirtilen çözümleri bulabilirsiniz. QVD dosyalarının okunması optimize modda veya standart modda yapılabilir. (Kullanılan yöntem, işlemin karmaşıklığına bağlı olarak QlikView kod altyapısı tarafından otomatik olarak seçilir.) Optimize mod, standart moddan (oldukça yaklaşık olarak) 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.

Durum 1: 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ı içinde (ODBC/OLE DB değil) 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.

  • QlikView, ö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);

Durum 2: Yalnızca Ekleme (Güncelleştirme veya Silme Yok)

Veriler basit bir günlük dosyası dışındaki bir veritabanında bulunuyorsa, durum 1 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.

  • QlikView, son kod çalıştırma işleminden sonra veritabanına eklenen kayıtları yükler.

  • QlikView'ün yeni kayıtları tanıması için bir alan ModificationDate (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 (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.)

Durum 3: Ekleme ve Güncelleştirme (Silme Yok)

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

  • Veri kaynağı herhangi bir veritabanı olabilir.

  • QlikView, son kod çalıştırma işleminden sonra veritabanına eklenen veya veritabanında güncelleştirilen kayıtları yükler

  • QlikView'ün yeni kayıtları tanıması için bir alan ModificationDate (veya benzeri) gereklidir.

  • QlikView'ün QVD dosyasından güncelleştirilmiş 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;

 

Durum 4: Ekleme, Güncelleştirme ve Silme

Ele alması en zor olan durum, kayıtların kod çalıştırma 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.

  • QlikView, son kod çalıştırma işleminden sonra veritabanına eklenen veya veritabanında güncelleştirilen kayıtları yükler.

  • QlikView, son kod çalıştırma işleminden sonra veritabanından silinen kayıtları kaldırır.

  • QlikView'ün yeni kayıtları tanıması için bir alan ModificationDate (veya benzeri) gereklidir.

  • QlikView'ün QVD dosyasından güncelleştirilmiş 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