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

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.

InformacjaW niektórych przypadkach, gdy dane nie są poprawnie sformułowane, pola będą otoczone podwójnymi cudzysłowami, aby zapewnić poprawną interpretację danych. Może się tak zdarzyć na przykład wtedy, gdy pole będzie zawierać znaki takie jak cudzysłowy, przecinek, spację lub podziały wierszy.

Argumenty:  

Argumenty polecenia Store
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:

  • bezwzględna

    Przykład: c:\data\sales.qvd

  • względna wobec katalogu roboczego aplikacji Qlik Sense.

    Przykład: data\sales.qvd

    Pominięcie ścieżki spowoduje, że aplikacja Qlik Sense zapisze plik w katalogu wskazanym instrukcją Directory. W przypadku braku instrukcji Directory aplikacja Qlik Sense zapisuje plik w katalogu roboczym, którym jest C:\Users\{user}\Documents\Qlik\Sense\Apps.

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.

  • txt w przypadku plików CSV i TXT.

  • qvd dla plików QVD.

  • parquet dla plików Parquet.

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:

  • uncompressed

  • snappy

  • gzip

  • lz4

  • brotli

  • zstd

  • lz4_hadoop

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';

InformacjaW rozszerzeniach plików powiązań DataFiles rozróżniana jest wielkość liter. Na przykład: .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.

Data: LOAD * INLINE [ num, text, mixed 123.321, abc, 123 456.654, def, xyz 789.987, ghi, 321 ]; Format:
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.

Znaczniki sterujące Parquet
Znacznik sterującyDualTyp fizycznyTyp logicznyPrzekształcony typ
$parquet-booleanLiczbaBOOLEANNONENONE
$parquet-int32LiczbaINT32NONENONE
$parquet-int64LiczbaINT64NONENONE
$parquet-floatLiczbaFLOATNONENONE
$parquet-doubleLiczbaDOUBLENONENONE
$parquet-bytearrayCiąg znakówBYTE_ARRAYNONEUTF8
$parquet-bytearrayfixLiczbaFIXED_LEN_BYTE_ARRAYNONEDECIMAL
$parquet-decimalLiczbaINT64DECIMALDECIMAL
$parquet-dateLiczbaINT32DATEDATE
$parquet-timeLiczbaINT64TIMETIME_MICROS
$parquet-timestampLiczbaINT64TIMESTAMPTIMESTAMP_MICROS
$parquet-stringCiąg znakówBYTE_ARRAYSTRINGUTF8
$parquet-enumCiąg znakówBYTE_ARRAYENUMENUM
$parquet-intervalLiczbaFIXED_LEN_BYTE_ARRAYINTERVALINTERVAL
$parquet-jsonCiąg znakówBYTE_ARRAYJSONJSON
$parquet-bsonCiąg znakówBYTE_ARRAYBSONBSON
$parquet-uuidCiąg znakówFIXED_LEN_BYTE_ARRAYUUIDNONE

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.

Data: LOAD * INLINE [ num, text, 123.321, abc 456.654, def 789.987, ghi ]; TAG num WITH '$parquet-int32'; STORE Data INTO [lib://DataFiles/Tmp.parquet] (parquet);

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ć!