Load
W kontekście modyfikacji wykresu instrukcja LOAD ładuje do hiperkostki dodatkowe dane z danych zdefiniowanych w skrypcie lub z wcześniej załadowanej tabeli. Możliwe jest również ładowanie danych z połączeń analitycznych.
Składnia:
Add | Replace LOAD fieldlist
(
inline data [ format-spec ] |
resident table-label
) | extension pluginname.functionname([script] tabledescription)]
[ where criterion | while criterion ]
[ group by groupbyfieldlist ]
[order by orderbyfieldlist ]
Argumenty:
Argument | Opis |
---|---|
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ń. |
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. Więcej informacji zawiera temat Elementy specyfikacji formatu. |
resident | Klauzula resident umożliwia załadowanie danych z wcześniej załadowanej tabeli. table label to etykieta poprzedzająca instrukcję LOAD, która utworzyła pierwotną tabelę. Na końcu etykiety musi się znajdować dwukropek. |
extension | Dane można ładować z połączeń analitycznych. Należy użyć klauzuli extension, aby wywołać funkcję zdefiniowaną we wtyczce rozszerzeń po stronie serwera (SSE) albo dokonać oceny skryptu. Do wtyczki SSE można wysłać pojedynczą tabelę i zostanie zwrócona pojedyncza tabela danych. Jeśli wtyczka nie określa nazw pól, które są zwracane, wówczas pola otrzymają nazwy Field1, Field2 itd. Extension pluginname.functionname( tabledescription );
Sposób obsługi typów 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 takie pole jest traktowane jako tekstowe. W każdym innym przypadku jest traktowane jako liczbowe. Typ danych można wymusić, umieszczając nazwę pola w funkcji String() lub Mixed().
Funkcje String() i Mixed() nie mogą być używane poza definicjami pola tabeli w klauzuli extension, a ponadto w definicji pola tabeli nie można używać innych funkcji Qlik Sense. Więcej informacji na temat połączeń analitycznych zawiera repozytorium 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. |