Load
Instrukcja LOAD ładuje pola z pliku, z danych zdefiniowanych w skrypcie, z wcześniej załadowanej tabeli, ze strony internetowej, z wyniku późniejszej instrukcji SELECT lub przez automatyczne wygenerowanie danych.
Składnia:
LOAD [ distinct ] fieldlist
[( from file [ format-spec ] |
from_field fieldassource [format-spec]
inline data [ format-spec ] |
resident table-label |
autogenerate size )]
[ where criterion | while criterion ]
[ group_by groupbyfieldlist ]
[order_by orderbyfieldlist ]
Argumenty:
Argument | Opis |
---|---|
distinct |
Można użyć distinct jako predykat, aby załadować tylko unikalne rekordy. Jeśli istnieją duplikaty rekordów, zostanie załadowane pierwsze wystąpienie. W przypadku używania wcześniejszych załadowań należy umieścić distinct w pierwszej instrukcji LOAD, ponieważ distinct ma wpływ tylko na tabelę docelową. |
fieldlist |
fieldlist ::= ( * | field {, field } )
Lista ładowanych pól. Użycie znaku * jako listy pól oznacza wszystkie pola w tabeli. field ::= ( fieldref | expression ) [as aliasname ]Definicja pola musi zawsze zawierać literał, odniesienie do istniejącego pola lub wyrażenie. fieldref ::= ( fieldname |@fieldnumber |@startpos:endpos [ I | U | R | B | T] )fieldname jest tekstem identycznym z nazwą pola w tabeli. Jeśli nazwa pola zawiera np. spacje, musi być ujęta w proste podwójne cudzysłowy lub nawiasy kwadratowe. Niekiedy nie są dostępne jawne nazwy pól. Wtedy należy użyć innego zapisu: @fieldnumber reprezentuje numer pola w rozdzielanym pliku tabeli. Musi to być dodatnia liczba całkowita poprzedzona znakiem „@”. Numeracja zawsze zaczyna się od 1, a kończy na liczbie pól. @startpos:endpos reprezentuje pozycję początkową i końcową pola w pliku z rekordami o stałej długości. Obie pozycje muszą być dodatnimi liczbami całkowitymi. Liczby muszą być poprzedzone znakiem „@” i rozdzielone dwukropkiem. Numeracja zawsze zaczyna się od 1, a kończy na liczbie pozycji. W ostatnim polu n jest używane jako pozycja końcowa.
expression może być funkcją liczbową lub znakową operującą na polach tej samej tabeli. Więcej informacji na ten temat zawiera sekcja na temat składni wyrażeń. |
from |
Klauzula from umożliwia ładowanie danych z pliku. file ::= [ path ] filename
Pominięcie ścieżki spowoduje, że aplikacja QlikView będzie wyszukiwać plik w katalogu wskazanym instrukcją Directory. W razie braku instrukcji Directory aplikacja QlikView będzie szukać w katalogu roboczym, czyli zwykle w katalogu zawierającym plik QlikView. InformacjaW instalacji serwera QlikView domyślny katalog roboczy to C:\ProgramData\QlikTech\Documents. Domyślny katalog roboczy można modyfikować w aplikacji Konsola zarządzania QlikView.
filename może zawierać standardowe symbole wieloznaczne DOS, czyli * i ?. Ich użycie spowoduje załadowanie wszystkich pasujących plików w określonym katalogu. format-spec ::= ( fspec-item { , fspec-item } )Na specyfikację formatu składają się pozycje specyfikacji formatu podane w nawiasach jako lista. |
from_field | from_field Klauzula umożliwia załadowanie danych z wcześniej załadowanego pola. fieldassource::=(tablename, fieldname) Wskazywana jest nazwa pola odpowiadająca nazwie wcześniej załadowanej tabeli tablename i nazwie pola fieldname. format-spec ::= ( fspec-item {, fspec-item } )Na specyfikację formatu składają się pozycje specyfikacji formatu podane w nawiasach jako lista. |
inline | Klauzula inline wskazuje dane wpisywane bezpośrednio w skrypcie, a nie ładowane z pliku. data ::= [ text ] Dane wprowadzane w ramach klauzuli inline muszą być ujęte w podwójne cudzysłowy lub w nawiasy kwadratowe. Tekst umieszczony między tymi znakami zostanie zinterpretowany tak samo, jak zawartość pliku. Oznacza to między innymi, że w tekście klauzuli inline należy wstawiać nowe wiersze w tych samych miejscach, w których występowałyby w pliku tekstowym, naciskając klawisz Enter podczas wpisywania skryptu. Liczba kolumn jest zdefiniowana w pierwszej linii. format-spec ::= ( fspec-item {, fspec-item } )Na specyfikację formatu składają się pozycje specyfikacji formatu podane w nawiasach jako lista. |
resident | Klauzula resident umożliwia załadowanie danych z wcześniej załadowanej tabeli. table label to etykieta poprzedzająca instrukcje LOAD lub SELECT tworzące pierwotną tabelę. Na końcu etykiety musi się znajdować dwukropek. Gdy używana jest kombinacja instrukcji LOAD distinct i resident w wersji QlikView 12.00 lub nowszej, wówczas kolejność ładowania danych różni się od kolejności z wersji QlikView 11.20. Jeśli wymagana jest inna kolejność ładowania, należy dodać klauzulę order by. |
autogenerate | Klauzula autogenerate jest używana w przypadku danych, które mają być automatycznie generowane przez aplikację QlikView. size ::= number Number to liczba całkowita wskazująca liczbę generowanych rekordów. Lista pól nie może zawierać wyrażeń wymagających danych z bazy danych. W wyrażeniach dozwolone są jedynie stałe i funkcje bezparametrowe, na przykład rand() lub recno(). |
extension |
Dane można ładować z połączeń analitycznych. Klauzuli extension należy użyć w celu wywołania funkcji zdefiniowanej we wtyczce rozszerzenia po stronie serwera (SSE) albo w celu wyznaczenia wartości skryptu. Do wtyczki SSE można wysłać pojedynczą tabelę, a zwrócona zostanie pojedyncza tabela danych. Jeśli wtyczka nie określa nazw pól, które są zwracane, wówczas pola będą otrzymywać nazwy Field1, Field2 itd. Extension pluginname.functionname( tabledescription );
Obsługa typu danych w definicji pola tabeli Typy danych są automatycznie wykrywane w połączeniach analitycznych. Jeśli dane nie zawierają żadnych wartości liczbowych, a zawierają co najmniej jeden ciąg znaków inny niż NULL, wówczas to pole jest traktowane jako tekstowe. W każdym innym przypadku jest traktowane jako liczbowe. Typ danych można wymusić, opakowując nazwę pola w funkcję String() lub Mixed().
Funkcje String() lub Mixed() nie mogą być używane poza definicjami pól tabeli extension, a ponadto w definicji pola tabeli nie można używać żadnych innych funkcji QlikView. Więcej informacji na temat połączeń analitycznych Informacje na temat tworzenia połączenia analitycznego w programie QlikView Server lub QlikView Desktop zawiera sekcja: Połączenia analityczne Więcej na temat połączeń analitycznych można przeczytać w repozytorium w serwisie GitHub. qlik-oss/server-side-extension |
where | where to klauzula określająca, czy rekord ma być uwzględniony w selekcji, czy też nie. Selekcja jest uwzględniana, jeśli warunek criterion ma wartość True. criterion jest wyrażeniem logicznym. |
while |
while to klauzula określająca, czy rekord ma być wielokrotnie odczytywany. Ten sam rekord będzie odczytywany, dopóki warunek criterion ma wartość True. W praktyce korzystanie z klauzuli while zwykle wymaga również użycia funkcji IterNo( ). criterion jest wyrażeniem logicznym. |
group_by |
Klauzula group by służy do określania pól, według których dane mają być agregowane (grupowane). Pola agregujące powinny być w jakiś sposób dołączone w ładowanych wyrażeniach. Poza obrębem funkcji agregacji w ładowanych wyrażeniach wolno używać wyłącznie pól agregujących. groupbyfieldlist ::= (fieldname { ,fieldname } ) |
order_by | Klauzula order by służy do sortowania rekordów tabeli rezydentnej przed ich przetworzeniem przez instrukcję load. Tabelę rezydentną można sortować według dowolnej liczby pól w kolejności rosnącej lub malejącej. Sortowanie jest wykonywane w pierwszej kolejności według wartości liczbowej, a w drugiej kolejności według porządku leksykograficznego z uwzględnieniem znaków diakrytycznych. Klauzuli można używać tylko wtedy, gdy źródłem danych jest tabela rezydentna. Pola porządkujące określają, według którego pola należy sortować tabelę rezydentną. Pole można wskazać nazwą lub numerem w tabeli rezydentnej (pierwsze pole ma numer 1). orderbyfieldlist ::= fieldname [ sortorder ] { , fieldname [ sortorder ] } Kolejność sortorder może mieć wartość asc (rosnąco) lub desc (malejąco). Jeśli nie określono sortorder, przyjmuje się wartość asc. fieldname, path, filename i aliasname to ciągi tekstowe reprezentujące odpowiednio nazwę pola, ścieżkę, nazwę pliku i alias. Jako fieldname można podać dowolne pole z tabeli źródłowej. Pola utworzone klauzulą as (aliasname) są jednak poza zakresem i nie można ich używać w tej samej instrukcji load. |
Jeśli nie zostanie wskazane żadne źródło danych klauzulą from, inline, resident, from_field lub autogenerate, dane będą ładowane z wyniku instrukcji SELECT lub LOAD występującej bezpośrednio po bieżącej instrukcji. Następna instrukcja nie powinna mieć żadnego prefiksu.
Przykłady: