Przeskocz do zawartości głównej Przejdź do treści uzupełniającej

Ładowanie nowych i zaktualizowanych rekordów za pomocą funkcji ładowania przyrostowego

Jeśli aplikacja zawiera dużą ilość danych z baz danych, które są na bieżąco aktualizowane, przeładowanie całego zestawu danych może być czasochłonne. W tym przypadku należy załadować nowe lub zmienione rekordy z bazy danych. Pozostałe dane powinny już być dostępne w aplikacji. Operację taką umożliwia funkcja ładowania przyrostowego za pomocą plików QVD.

Ogólny proces wygląda następująco:

  1. Załaduj nowe lub zaktualizowane dane z tabeli źródłowej bazy danych.

    Jest to proces powolny, ale ładowana jest tylko ograniczona liczba rekordów.

  2. Załaduj dane już dostępne w aplikacji z pliku QVD.

    Załadowanych zostanie wiele rekordów, ale jest to proces znacznie szybszy.

  3. Utwórz nowy plik QVD.

    Plik ten będzie służyć na potrzeby następnego ładowania przyrostowego.

  4. Powtórz procedurę dla każdej ładowanej tabeli.

W poniższym przykładzie przedstawiono przypadki stosowania funkcji ładowania przyrostowego. Potrzebne może się jednak okazać bardziej kompleksowe rozwiązanie zależne od struktury źródłowej bazy danych i trybu operacji.

  • Tylko wstawianie (bez aktualizowania ani usuwania)
  • Wstawianie i aktualizowanie (bez usuwania)
  • Wstawianie, aktualizowanie i usuwanie

Pliki QVD można odczytywać w trybie zoptymalizowanym i trybie standardowym. (Silnik Qlik Sense automatycznie dokonuje wyboru metody w zależności od złożoności operacji). Tryb zoptymalizowany jest ok. 10 razy szybszy od trybu standardowego, czyli ok. 100 razy szybszy od zwykłego ładowania danych z bazy danych.

Więcej informacji zawiera temat Praca z plikami QVD.

Tylko wstawianie (bez aktualizowania ani usuwania)

Jeśli dane są przechowywane w bazie danych innego rodzaju niż prosty plik dziennika, metoda polegająca tylko na dołączaniu nie będzie działać. Mimo to można taką sytuację rozwiązać przy minimalnym nakładzie dodatkowej pracy. Obowiązują następujące warunki:

  • Źródło danych może być dowolną bazą danych.

  • Program Qlik Sense ładuje wiersze wstawione do bazy danych od czasu ostatniego wykonania skryptu.

  • Pole ModificationTime (lub podobne) jest wymagane, aby program Qlik Sense rozpoznał nowe rekordy.

Przykład:  

QV_Table:

SQL SELECT PrimaryKey, X, Y FROM DB_TABLE

WHERE ModificationTime >= #$(LastExecTime)#

AND ModificationTime < #$(BeginningThisExecTime)#;

 

Concatenate LOAD PrimaryKey, X, Y FROM [lib://DataFiles/File.QVD];

STORE QV_Table INTO [lib://DataFiles/File.QVD];

 

Znaki krzyżyka w klauzuli SQL WHERE wyznaczają początek i koniec daty. Informacje o prawidłowej składni zapisu daty w używanej bazie danych można znaleźć w dokumentacji bazy.

Wstawianie i aktualizowanie (bez usuwania)

Ten przypadek ma zastosowanie, jeśli dane z wcześniej załadowanych wierszy mogły ulec zmianie od czasu wykonania skryptu. Obowiązują następujące warunki:

  • Źródło danych może być dowolną bazą danych.

  • Program Qlik Sense ładuje wiersze wstawione do bazy danych lub zaktualizowane w bazie danych od czasu ostatniego wykonania skryptu.

  • Pole ModificationTime (lub podobne) jest wymagane, aby program Qlik Sense rozpoznał nowe wiersze.

  • Wymagane jest pole klucza głównego, aby program Qlik Sense mógł zidentyfikować zaktualizowane rekordy w pliku QVD.

  • Zastosowane rozwiązanie wymaga odczytu pliku QVD w trybie standardowym (a nie zoptymalizowanym), co jednak i tak będzie znacznie szybsze od ładowania całej bazy danych.

Przykład:  

QV_Table:

SQL SELECT PrimaryKey, X, Y FROM DB_TABLE

WHERE ModificationTime >= #$(LastExecTime)#;

 

Concatenate LOAD PrimaryKey, X, Y FROM [lib://DataFiles/File.QVD]

WHERE NOT Exists(PrimaryKey);

 

STORE QV_Table INTO [lib://DataFiles/File.QVD];

Wstawianie, aktualizowanie i usuwanie

Najtrudniejszym do obsłużenia przypadkiem jest sytuacja, w której wiersze są usuwane z bazy danych między kolejnymi wykonaniami skryptu. Obowiązują następujące warunki:

  • Źródło danych może być dowolną bazą danych.

  • Program Qlik Sense ładuje wiersze wstawione do bazy danych lub zaktualizowane w bazie danych od czasu ostatniego wykonania skryptu.

  • Program Qlik Sense usuwa wiersze usunięte z bazy danych od czasu ostatniego wykonania skryptu.

  • Pole ModificationTime (lub podobne) jest wymagane, aby program Qlik Sense rozpoznał nowe wiersze.

  • Wymagane jest pole klucza głównego, aby program Qlik Sense mógł zidentyfikować zaktualizowane rekordy w pliku QVD.

  • Zastosowane rozwiązanie wymaga odczytu pliku QVD w trybie standardowym (a nie zoptymalizowanym), co jednak i tak będzie znacznie szybsze od ładowania całej bazy danych.

Przykład:  

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 [lib://DataFiles/File.QVD]

WHERE NOT EXISTS(PrimaryKey);

 

Inner Join SQL SELECT PrimaryKey FROM DB_TABLE;

 

If ScriptErrorCount = 0 then

STORE QV_Table INTO [lib://DataFiles/File.QVD];

Let LastExecTime = ThisExecTime;

End If

Dowiedz się więcej

Czy ta strona była pomocna?

Jeżeli natkniesz się na problemy z tą stroną lub jej zawartością — literówkę, brakujący krok lub błąd techniczny — daj nam znać, co możemy poprawić!