Store
Mit dem Befehl Store wird eine QVD-, Parquet-, CSV- oder TXT-Datei erstellt.
Syntax:
Store [ fieldlist from] table into filename [ format-spec ];
Mit dem Befehl wird eine explizit benannte QVD-Datei, eine Parquet-Datei oder eine Textdatei erstellt.
Durch den Befehl werden Werte einer Datentabelle in die neue Datei exportiert. Wenn Felder aus mehreren Tabellen exportiert werden sollen, muss zuvor im Skript ein expliziter join erstellt werden, um die zu exportierende Datentabelle zu generieren.
Textwerte werden im CSV-Format nach UTF-8 exportiert. Es kann ein Trennzeichen festgelegt werden (siehe LOAD). Der store-Befehl in einer CSV-Datei unterstützt keinen BIFF-Export.
Argumente:
Argument | Beschreibung |
---|---|
fieldlist::= ( * | field) { , field } ) |
Liste der zu ladenden Felder. Das Sternchen * steht für alle Felder. field::= fieldname [as aliasname ] Dabei ist fieldname ein Text, der einem Feldnamen in table entspricht. (Beachten Sie, dass der Feldname zwischen geraden doppelten Anführungszeichen oder eckigen Klammern stehen muss, wenn er Leerzeichen oder andere nicht standardmäßige Zeichen enthält.) aliasname ist ein alternativer Name, der anstelle des Feldnamens in der QVD- oder CSV-Datei verwendet werden soll. |
table | Ein Skriptname einer bereits eingelesenen Tabelle. |
filename |
Der Name der Zieldatei einschließlich eines gültigen Pfads zu einer vorhandenen Ordner-Datenverbindung. Beispiel: 'lib://Table Files/target.qvd' Im Legacymodus für die Skripterstellung werden die folgenden Pfadformate ebenfalls unterstützt:
|
format-spec ::=( ( txt | qvd | parquet), Komprimierung ist codec) |
Sie können die Formatspezifikation auf jedes dieser Dateiformate festlegen. Fehlt die Formatbezeichnung, wird qvd angenommen.
Wenn Sie parquet verwenden, können Sie auch festlegen, welcher Komprimierungs-Codec mit Komprimierung ist verwendet wird. Wenn Sie den Komprimierungs-Codec nicht mit Komprimierung ist festlegen, wird snappy verwendet. Die folgenden Komprimierungseinstellungen sind verfügbar:
Beispiel: Store mytable into [lib://DataFiles/myfile.parquet] (parquet, compression is lz4); |
Beispiele:
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';
Speichern in Parquet-Dateien
Parquet ist ein stark typorientiertes Dateiformat, in dem jedes Feld einen einzelnen spezifischen Datentyp enthält (z. B. in32, double, timestamp oder text). Qlik Sense speichert interne Daten dual lose nach Typen sortiert, wobei Daten aus verschiedenen Quellen in den gleichen Feldern gemischt werden können. Da nur ein Teil des dualen Werts in jedem Feld in Parquet gespeichert werden kann, ist es wichtig zu wissen, was in jedem Feld enthalten ist. Standardmäßig verwendet Qlik Sense den Feldtyp, um zu bestimmen, wie das Feld gespeichert werden soll. Wenn Daten in Parquet-Dateien in einem spezifischen Format gespeichert werden, müssen, Sie beim Laden angeben, von welchem Datentyp Ihre Felder sind. Wenn Sie versuchen, Daten in einer Parquet-Datei in inkompatiblen Felder zu speichern (z. B. Zahlen in einem Textfeld oder Text in einem Zeitstempelfeld), führt dies zu Null-Werten.
Wenn Sie Daten laden, die in Parquet gespeichert werden sollen, ist es möglich, das Standardverhalten zu ändern. Sie können die Daten entweder formatieren, um den Datentyp zu ändern, oder sie mit Tags versehen, um einen bestimmten Spaltentyp in Parquet zu erzwingen.
Formatieren von Daten zum Speichern in Parquet
Sie können die Formatierungsfunktionen von Qlik Sense verwenden, um Ihre Daten zu klassifizieren. Beispielsweise können Text(), Num(), Interval() oder Timestamp() Datenformate beim Speichern von Daten in Parquet erzwingen. Qlik Sense kann Daten in fast 20 Datentyen speichern, abhängig von Feldattributen und automatischen Feld-Tags. Weitere Informationen finden Sie unter Interpretationsfunktionen.
Beispiel: Formatieren von Daten mit Num() und Text()
Das folgende Beispiel zeigt, wie Daten für das Speichern in Parquet vorbereitet werden. Num() wird auf das numerische Feld angewendet. Text() wird sowohl auf Textfelder als auch auf gemischte Felder angewendet. Im Fall gemischter Felder verhindert Text(), dass die Felder in Parquet wie numerische Felder behandelt und die Textwerte in Null-Werte geändert werden.
NoConcatenate LOAD num, text, Text(mixed) as mixed RESIDENT Data; STORE Format INTO [lib://DataFiles/Tmp.parquet] (parquet);
Taggen von Daten zum Speichern in Parquet
Sie taggen Ihre Daten mit $parquet-Tags, um spezifische Spaltentypen zu erzwingen, wenn Daten in Parquet gespeichert werden. Jeder Datentyp kann erzwungen werden, indem das entsprechende Kontroll-Tag hinzugefügt wird. Um beispielsweise ein Feld in Parquet als INT32 zu speichern, taggen Sie es im Ladeskript mit $parquet-int32. Abhängig vom Datentyp wird entweder die Zeichenfolge oder die numerische Darstellung der dualen Daten gespeichert.
Die folgenden Parquet-Kontroll-Tags können verwendet werden, um Felder zum Speichern in Parquet-Dateien zu taggen.
Kontroll-Tag | Dual | Physischer Typ | Logischer Typ | Konvertierter Typ |
---|---|---|---|---|
$parquet-boolean | Zahl | BOOLEAN | NONE | NONE |
$parquet-int32 | Zahl | INT32 | NONE | NONE |
$parquet-int64 | Zahl | INT64 | NONE | NONE |
$parquet-float | Zahl | FLOAT | NONE | NONE |
$parquet-double | Zahl | DOUBLE | NONE | NONE |
$parquet-bytearray | String | BYTE_ARRAY | NONE | UTF8 |
$parquet-bytearrayfix | Zahl | FIXED_LEN_BYTE_ARRAY | NONE | DECIMAL |
$parquet-decimal | Zahl | INT64 | DECIMAL | DECIMAL |
$parquet-date | Zahl | INT32 | DATE | DATE |
$parquet-time | Zahl | INT64 | TIME | TIME_MICROS |
$parquet-timestamp | Zahl | INT64 | TIMESTAMP | TIMESTAMP_MICROS |
$parquet-string | String | BYTE_ARRAY | STRING | UTF8 |
$parquet-enum | String | BYTE_ARRAY | ENUM | ENUM |
$parquet-interval | Zahl | FIXED_LEN_BYTE_ARRAY | INTERVAL | INTERVAL |
$parquet-json | String | BYTE_ARRAY | JSON | JSON |
$parquet-bson | String | BYTE_ARRAY | BSON | BSON |
$parquet-uuid | String | FIXED_LEN_BYTE_ARRAY | UUID | NONE |
Beispiel: Taggen von Daten zum Speichern in Parquet
In diesem Beispiel werden zwei Tags verwendet, um die Daten für Parquet zu definieren. Das Feld num wird mit $parquet-int32 getaggt, um es als numerisches Feld zu definieren, das in Parquet als INT32 festgelegt wird.