Przeskocz do zawartości głównej

Pliki QVD

Plik QVD (QlikView Data) zawiera tabelę danych eksportowaną z programu Qlik Sense lub QlikView. QVD to własnościowy format Qlik, który może być zapisywany i odczytywany wyłącznie przez programy Qlik Sense i QlikView. Format pliku jest zoptymalizowany w celu uzyskania maksymalnej szybkości odczytu danych przez skrypty Qlik Sense przy zachowaniu niewielkich rozmiarów. Format pliku jest zoptymalizowany w celu uzyskania maksymalnej szybkości odczytu danych przez skrypty przy zachowaniu niewielkich rozmiarów. Odczyt danych z pliku QVD jest zazwyczaj 10–100 razy szybszy niż odczyt z innych źródeł danych.

Dostępne są dwa tryby odczytu plików QVD: standardowy (szybki) i zoptymalizowany (szybszy). Wybrany tryb jest automatycznie określany przez silnik obsługi skryptów Qlik Sense. Trybu zoptymalizowanego można używać jedynie w przypadku odczytywania wszystkich ładowanych pól bez transformacji (formuł wykonujących operacje na polach), choć dozwolona jest zmiana nazw pól. Ładowanie zoptymalizowane jest też wyłączane w przypadku klauzuli Where wymagającej od programu Qlik Sense rozpakowania wierszy.

Plik QVD mieści dokładnie jedną tabelę danych i obejmuje trzy części:

  • Nagłówek XML w kodowaniu znaków UTF-8 opisujący pola tabeli, układ następujących dalej informacji i metadane;
  • Tabele symboli w formacie ze wstawianiem bajtów.
  • Rzeczywiste dane tabeli w formacie ze wstawianiem bitów.

Pliki QVD mogą być używane do różnych celów. Można wskazać cztery typowe zastosowania, ale używanie tych plików często przynosi kilka korzyści naraz:

  • Przyspieszenie ładowania danych
  • Buforowanie niezmiennych lub rzadko modyfikowanych bloków danych wejściowych w plikach QVD pozwala znacznie przyspieszyć wykonywanie skryptów na dużych zestawach danych.

  • Zmniejszenie obciążenia serwerów baz danych
  • Można znacznie zmniejszyć ilość danych pobieranych z zewnętrznych źródeł danych. Pozwala to ograniczyć obciążenie zewnętrznych baz danych i natężenie ruchu w sieci. Poza tym gdy kilka skryptów Qlik Sense korzysta z tych samych danych, wystarczy tylko raz załadować takie dane ze źródłowej bazy danych do pliku QVD. Inne aplikacje będą mogły następnie używać tych samych danych za pośrednictwem tego pliku QVD.

  • Konsolidowanie danych z wielu aplikacji Qlik Sense
  • Instrukcja skryptu Binary pozwala tylko załadować dane z jednej aplikacji Qlik Sense do innej, natomiast użycie plików QVD umożliwia łączenie w skrypcie Qlik Sense danych z dowolnie wielu aplikacji Qlik Sense. Stwarza to liczne możliwości konsolidowania podobnych danych z różnych jednostek organizacyjnych itp.

  • Ładowanie przyrostowe
  • Typowym zastosowaniem plików QVD jest wspomaganie ładowania przyrostowego, czyli ładowania jedynie nowych rekordów z rosnącej bazy danych.

Tworzenie plików QVD

Istnieją dwa sposoby utworzenia pliku QVD:

  • Jawne utworzenie i nazwanie pliku z użyciem polecenia Store w skrypcie Qlik Sense.
  • W skrypcie należy określić, że wcześniej wczytana tabela lub część takiej tabeli ma zostać eksportowana do pliku o podanej nazwie i lokalizacji.

  • Automatyczne tworzenie i utrzymywanie przez skrypt.
  • Jeśli instrukcja LOAD lub SELECT zostanie poprzedzona prefiksem Buffer, program Qlik Sense automatycznie utworzy plik QVD, który w określonych warunkach może zastępować pierwotne źródło danych podczas przeładowywania danych.

Niezależnie od metody utworzenia wszystkie pliki QVD dają taką samą szybkość odczytu.

Store

Ta funkcja skryptów tworzy jawnie nazwane pliki QVD, CSV lub txt.

Syntax:  

Store[ *fieldlist from] table into filename [ format-spec ];

Instrukcja może eksportować pola tylko z jednej tabeli danych. W przypadku eksportowania pól z kilku tabel należy wcześniej jawnie wykonać w skrypcie sprzężenie, aby utworzyć tabelę danych do wyeksportowania.

Wartości tekstowe są eksportowane do pliku CSV w formacie UTF-8. Możliwe jest określenie ogranicznika — zobacz opis instrukcji LOAD. Instrukcja store zapisująca do pliku CSV nie obsługuje eksportu BIFF .

Store mytable into [lib://DataFiles/xyz.qvd]; Store * from mytable into [lib://DataFiles/xyz.qvd]; Store myfield from mytable into [lib://DataFiles/xyz.qvd]; Store myfield as renamedfield, myfield2 as renamedfield2 from mytable into [lib://DataFiles/xyz.qvd]; Store mytable into [lib://DataFiles/myfile1.txt]; Store mytable into [lib://DataFiles/myfile2.csv];

Wykonaj następujące czynności:

  1. Otwórz aplikację Advanced Scripting Tutorial.
  2. Kliknij sekcję skryptu Product.
  3. Dodaj następujący kod na końcu skryptu:
  4. Store * from Product into [lib://DataFiles/ProductData.qvd](qvd);

    Skrypt powinien wyglądać następująco:

    CrossTable(Month, Sales) LOAD Product, "Jan 2014", "Feb 2014", "Mar 2014", "Apr 2014", "May 2014" FROM [lib://DataFiles/Product.xlsx] (ooxml, embedded labels, table is Product); Store * from Product into [lib://DataFiles/ProductData.qvd](qvd);

  5. Kliknij polecenie Ładuj dane.
  6. Na liście plików powinien teraz widnieć plik Product.qvd.

    Ten plik danych jest wynikiem wykonania skryptu Crosstable i zawiera tabelę o trzech kolumnach, po jednej dla każdej kategorii (Product, Month, Sales). Używając tego pliku danych, można by teraz zastąpić całą sekcję skryptu Product .

Odczyt danych z plików QVD

Istnieje kilka metod wczytania lub otwarcia pliku QVD w programie Qlik Sense:

  • Załadowanie pliku QVD jako jawnego źródła danych. Instrukcje load w skrypcie Qlik Sense mogą się odwoływać do plików QVD tak samo jak do innych plików tekstowych (csv, fix, dif, biff itp.).
  • LOAD * from [lib://DataFiles/xyz.qvd] (qvd); LOAD fieldname1, fieldname2 from [lib://DataFiles/xyz.qvd] (qvd); LOAD fieldname1 as newfieldname1, fieldname2 as newfieldname2 from [lib://DataFiles/xyz.qvd](qvd);
  • Automatyczne ładowanie buforowanych plików QVD. W przypadku użycia prefiksu buffer przed instrukcją load lub select odczyt nie wymaga żadnych dodatkowych instrukcji. Program Qlik Sense będzie automatycznie ustalać, w jakim zakresie używać danych z pliku QVD zamiast pobierania danych za pośrednictwem pierwotnej instrukcji LOAD lub SELECT.
  • Dostęp do plików QVD z poziomu skryptu. Dane zawarte w nagłówku XML pliku QVD można pobierać za pomocą odpowiednich funkcji skryptowych o nazwach zaczynających się na QVD.

Wykonaj następujące czynności:

  1. W sekcji skryptu Product ujmij w komentar cały skrypt.
  2. Wprowadź następujący skrypt:
  3. Load * from [lib://DataFiles/ProductData.qvd](qvd); 

  4. Kliknij polecenie Ładuj dane.
  5. Dane są wczytywane z pliku QVD.

    Okno postępu ładowania danych
    Data load progress window.

InformacjaAby zapoznać się z używaniem plików QVD w celu wykonywania ładowania przyrostowego, przeczytaj ten wpis na blogu – Qlik Community: Overview of Qlik Incremental Loading (Przegląd funkcji ładowania przyrostowego Qlik)

Buffer

Pliki QVD można tworzyć i utrzymywać automatycznie z użyciem prefiksu Buffer. Prefiksu tego można używać w większości instrukcji LOADSELECT w skryptach. Sygnalizuje on, że do buforowania wyniku instrukcji używane są pliki QVD.

Syntax:  

Buffer [ (option [ , option])] ( loadstatement | selectstatement ) option::= incremental | stale [after] amount [(days | hours)]

Jeśli nie zostanie podana żadna opcja, bufor QVD utworzony przez pierwsze wykonanie skryptu będzie używany przez czas nieokreślony.

Example:  

Buffer load * from MyTable;

stale [after] amount [(days | hours)]

Amount to liczba określająca okres. Mogą być używane liczby dziesiętne (Decimals). Jeśli parametr nie zostanie określony, przyjmowana jest wartość dni.

Opcja stale after jest zazwyczaj używana w przypadku źródeł bazodanowych, gdy nie istnieje prosty znacznik czasu oryginalnych danych. Klauzula stale after jedynie określa czas od momentu utworzenia bufora QVD, po którego upływie bufor będzie uważany za nieważny. Przed upływem tego czasu źródłem danych będzie bufor QVD, natomiast po upływie tego czasu używane będzie oryginalne źródło danych. Plik bufora QVD zostanie automatycznie zaktualizowany i rozpocznie się nowy okres.

Example:  

Buffer (stale after 7 days) load * from MyTable;

Incremental

Opcja incremental umożliwia odczytywanie tylko części pliku bazowego. Poprzedni rozmiar pliku jest zapisany w nagłówku XML pliku QVD. Jest to szczególnie przydatne w przypadku plików dziennika. Wszystkie rekordy załadowane już wcześniej są wczytywane z pliku QVD, natomiast dalsze nowe rekordy są wczytywane z oryginalnego pliku źródłowego. Na koniec tworzony jest zaktualizowany plik QVD.

Należy pamiętać, że opcji incremental można używać wyłącznie z instrukcjami LOAD i plikami tekstowymi oraz że ładowania przyrostowego nie można używać w przypadku zmiany lub usuwania starych danych.

Example:  

Buffer (incremental) load * from MyLog.log;

Bufory QVD są zazwyczaj usuwane, gdy nie ma już do nich żadnych odniesień po wykonaniu całego skryptu w aplikacji tworzącej bufor lub gdy aplikacja tworząca bufor przestaje istnieć. Aby zachować zawartości bufora w postaci pliku QVD lub CSV, należy użyć instrukcji Store.

Wykonaj następujące czynności:

  1. Utwórz nową aplikację i nadaj jej nazwę.
  2. Dodaj nową sekcję skryptu w edytorze ładowania danych.
  3. W sekcji DataFiles dostępnej po prawej stronie kliknij przycisk Wybierz dane.

  4. Prześlij, a następnie wybierz Cutlery.xlsx.
  5. W oknie Wybierz dane z kliknij przycisk Wstaw skrypt.
  6. Obejmij komentarzem pola w instrukcji ładowania i zmień instrukcję ładowania do następującej postaci:
  7. Buffer LOAD *

    Skrypt powinien wyglądać następująco:

    Buffer LOAD * // "date", // item, // quantity FROM [lib://DataFiles/Cutlery.xlsx] (ooxml, embedded labels, table is Sheet1);

  8. Kliknij polecenie Ładuj dane.
  9. Podczas pierwszego ładowania danych są one ładowane z Cutlery.xlsx.

    Okno postępu ładowania danych
    Data load progress window.

    Instrukcja Buffer tworzy również plik QVD i zapisuje go w Qlik Sense. W przypadku wdrożenia w chmurze jest on przechowywany w katalogu w chmurze.

  10. Kliknij ponownie przycisk Ładuj dane.
  11. Tym razem dane są ładowane z pliku QVD utworzonego przez instrukcję Buffer podczas pierwszego ładowania danych.
  12. Okno postępu ładowania danych
    Data load progress window.

Dziękujemy!

Kurs został ukończony i masz już dodatkową wiedzę na temat tworzenia skryptów w programie Qlik Sense. Informacje o innych dostępnych szkoleniach znajdziesz w naszej witrynie internetowej.