Store
Instrukcja Store tworzy plik QVD, Parquet, CSV lub TXT.
Składnia:
Store [ fieldlist from] table into filename [ format-spec ];
Ta instrukcja utworzy plik jawnie nazwany QVD, Parquet lub plik tekstowy.
Instrukcja może eksportować pola tylko z jednej tabeli danych. W przypadku eksportowania pól z kilku tabel należy wcześniej wykonać w skrypcie jawną instrukcję join, 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 do pliku CSV nie obsługuje eksportu BIFF.
Argumenty:
Argument | Description |
---|---|
fieldlist::= ( * | field) { , field } ) |
Lista wybieranych pól. Użycie znaku * jako listy pól oznacza wszystkie pola. field::= fieldname [as aliasname ] fieldname jest tekstem identycznym z nazwą pola w tabeli table. (Jeśli nazwa pola zawiera spacje lub inne znaki niestandardowe, musi być ujęta w proste podwójne cudzysłowy lub nawiasy kwadratowe). aliasname jest alternatywną nazwą dla pola, która będzie używana w wynikowym pliku QVD lub CSV. |
table | Etykieta skryptu reprezentująca już załadowaną tabelę do użycia jako źródło danych. |
filename |
Nazwa pliku docelowego wraz z poprawną ścieżką połączenia danych istniejącego folderu. Przykład: 'lib://Table Files/target.qvd' W dotychczasowym trybie tworzenia skryptów obsługiwane są również następujące formaty ścieżek:
|
format-spec ::=( ( txt | qvd | parquet), compression is codec) |
Specyfikację formatu można ustawić na jeden z następujących formatów plików. Jeśli specyfikacja formatu będzie pominięta, wówczas zostanie przyjęty format qvd.
Jeśli używasz parquet, możesz również ustawić, który kodek kompresji ma być używany z compression is. Jeśli nie określisz kodeka z compression is, zostanie użyty kodek snappy. Dostępne są następujące ustawienia kompresji:
Przykład: Store mytable into [lib://DataFiles/myfile.parquet] (parquet, compression is lz4); |
Przykłady:
Store mytable into xyz.qvd (qvd);
Store * from mytable into 'lib://FolderConnection/myfile.qvd';
Store Name, RegNo from mytable into xyz.qvd;
Store Name as a, RegNo as b from mytable into 'lib://FolderConnection/myfile.qvd';
Store mytable into myfile.txt (txt);
Store mytable into myfile.parquet (parquet);
Store * from mytable into 'lib://FolderConnection/myfile.qvd';
Zapisywanie w plikach parquet
Parquet to format pliku o silnym typowaniu, w którym każde pole zawiera pojedynczy, określony typ danych (np. in32, double, sygnatura czasowa lub tekst). Qlik Sense przechowuje dane wewnętrzne jako słabo typowane wartości typu dual, w których dane z różnych źródeł można mieszać w tych samych polach. Ponieważ w każdym polu w pliku Parquet można przechowywać tylko jedną część wartości typu dual, ważne jest, aby wiedzieć, co zawiera każde pole. Qlik Sense używa domyślnie typu pola do określenia sposobu przechowywania tego pola. W przypadku przechowywania danych w plikach Parquet w określonym formacie należy podczas ich ładowania określić, jakiego rodzaju dane mają być Twoje pola. Jeśli spróbujesz zapisać dane w niezgodnych polach pliku Parquet, na przykład liczby w polu tekstowym lub tekst w polu znacznika czasu, otrzymasz wartości zerowe.
Podczas ładowania danych, które zamierzasz przechowywać w pliku Parquet, można zmienić domyślny sposób działania. Możesz sformatować plik tak, aby zmienić typ danych, lub dodać znacznik, aby wymusić określone typy kolumn w formacie Parquet.
Formatowanie danych do przechowywania w pliku Parquet
Do klasyfikowania danych można używać funkcji formatowania Qlik Sense. Na przykład Text(), Num(), Interval() lub Timestamp() mogą wymuszać formaty danych podczas zapisywania danych w pliku Parquet. Qlik Sense może przechowywać dane w prawie 20 typach danych w zależności od atrybutów pól i automatycznych znaczników pól. Więcej informacji zawiera temat Funkcje interpretacji
Przykład: Formatowanie danych przy użyciu Num() i Text()
Poniższy przykład ilustruje przygotowanie danych do przechowywania w pliku Parquet. Funkcja Num() jest stosowana do pola liczbowego. Funkcję Text() stosuje się zarówno do tekstu, jak i typu mieszanego. W przypadku typu mieszanego funkcja Text() zapobiega traktowaniu go jak pola liczbowego w Parquet i zmianie wartości tekstowych na wartości null.
NoConcatenate LOAD num, text, Text(mixed) as mixed RESIDENT Data; STORE Format INTO [lib://DataFiles/Tmp.parquet] (parquet);
Oznaczanie danych w celu zapisu w pliku Parquet
Dane oznacza się znacznikami $parquet, aby wymusić określone typy kolumn podczas przechowywania danych w pliku Parquet. Każdy typ danych można wymusić, dodając odpowiedni znacznik sterujący. Na przykład, aby zapisać pole jako typ INT32 w pliku Parquet, oznacz je znacznikiem $parquet-int32 w skrypcie ładowania. W zależności od typu danych będzie przechowywany ciąg znaków lub reprezentacja numeryczna danych typu dual.
Poniższych znaczników sterujących Parquet można używać do oznaczania pól do przechowywania w plikach Parquet.
Znacznik sterujący | Dual | Typ fizyczny | Typ logiczny | Przekształcony typ |
---|---|---|---|---|
$parquet-boolean | Liczba | BOOLEAN | NONE | NONE |
$parquet-int32 | Liczba | INT32 | NONE | NONE |
$parquet-int64 | Liczba | INT64 | NONE | NONE |
$parquet-float | Liczba | FLOAT | NONE | NONE |
$parquet-double | Liczba | DOUBLE | NONE | NONE |
$parquet-bytearray | Ciąg znaków | BYTE_ARRAY | NONE | UTF8 |
$parquet-bytearrayfix | Liczba | FIXED_LEN_BYTE_ARRAY | NONE | DECIMAL |
$parquet-decimal | Liczba | INT64 | DECIMAL | DECIMAL |
$parquet-date | Liczba | INT32 | DATE | DATE |
$parquet-time | Liczba | INT64 | TIME | TIME_MICROS |
$parquet-timestamp | Liczba | INT64 | TIMESTAMP | TIMESTAMP_MICROS |
$parquet-string | Ciąg znaków | BYTE_ARRAY | STRING | UTF8 |
$parquet-enum | Ciąg znaków | BYTE_ARRAY | ENUM | ENUM |
$parquet-interval | Liczba | FIXED_LEN_BYTE_ARRAY | INTERVAL | INTERVAL |
$parquet-json | Ciąg znaków | BYTE_ARRAY | JSON | JSON |
$parquet-bson | Ciąg znaków | BYTE_ARRAY | BSON | BSON |
$parquet-uuid | Ciąg znaków | FIXED_LEN_BYTE_ARRAY | UUID | NONE |
Przykład: Oznaczanie danych w celu zapisu w pliku Parquet
W tym przykładzie dwa znaczniki służą do definiowania danych dla formatu Parquet. Pole num jest oznaczone znacznikiem $parquet-int32 w celu zdefiniowania go jako pola liczbowego, które w pliku Parquet zostanie ustawione jako INT32.