Store
De Store-instructie genereert een QVD-, Parquet-, CSV- of TXT-bestand.
Syntaxis:
Store [ fieldlist from] table into filename [ format-spec ];
De opdracht maakt een expliciet genoemd QVD, Parquet of tekstbestand aan.
De opdracht kan alleen velden exporteren uit één gegevenstabel. Als velden uit diverse tabellen moeten worden geëxporteerd, moet eerst een expliciete join in het script worden opgegeven om de te exporteren gegevenstabel te maken.
De tekstwaarden worden in de indeling UTF-8 naar het CSV-bestand geëxporteerd. U kunt een scheidingsteken opgeven, zie LOAD. De store-opdracht voor een CSV-bestand ondersteunt geen BIFF-export.
Argumenten:
Argument | Beschrijving |
---|---|
fieldlist::= ( * | field) { , field } ) |
Een lijst van de te selecteren velden. Met een * als veldlijst worden alle velden aangeduid. field::= fieldname [as aliasname ] fieldname is een tekst die identiek is aan een veldnaam in table. (Houd er rekening mee dat de veldnaam tussen rechte dubbele aanhalingstekens of vierkante haken moet staan als deze spaties of andere niet-standaardtekens bevat.) aliasname is een alternatieve naam voor het veld, te gebruiken in het resulterende QVD- of CSV-bestand. |
table | Een scriptlabel representeert een reeds geladen tabel die als gegevensbron wordt gebruikt. |
filename |
De naam van het doelbestand inclusief een geldig pad naar een bestaande mapgegevensverbinding. Voorbeeld: 'lib://Table Files/target.qvd' In de bestaande scriptmodus, worden tevens de volgende padindelingen ondersteund:
|
format-spec ::=( ( txt | qvd | parquet), compressie is codec) |
U kunt de indelingsspecificatie instellen voor een van deze bestandsindelingen. Als de opmaakspecificatie wordt weggelaten, wordt qvd verondersteld.
Als u parquet gebruikt, kunt u ook instellen welke compressiecodec met compressie is moet worden gebruikt. Als u de compressiecodec met compressie is niet opgeeft, wordt snappy gebruikt. De volgende compressie-instellingen zijn beschikbaar:
Voorbeeld: Store mytable into [lib://DataFiles/myfile.parquet] (parquet, compression is lz4); |
Voorbeelden:
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';
Opslaan in Parquet-bestanden
Parquet is een sterk getypeerde bestandsindeling, waarbij elk veld een afzonderlijk specifiek type gegevens bevat (zoals in32, double, tijdstempel of tekst). Qlik Sense slaat interne gegevens op als een zwak getypeerde dual, waarbij gegevens van verschillende bronnen in dezelfde velden gecombineerd kunnen worden. Omdat maar één deel van de dual opgeslagen kan worden in elk veld in Parquet, is het belangrijk om te weten wat elk veld bevat. Qlik Sense gebruikt standaard het veldtype om te bepalen hoe het veld moet worden opgeslagen. U moet het gegevenstype van uw velden opgeven voor het laden als u gegevens in Parquet-bestanden in een specifieke indeling opslaat. Als u probeert om gegevens op te slaan in niet-compatibele velden in een Parquet-bestand, zoals getallen in een tekstveld of tekst in een tijdstempelveld, krijgt u null-waarden.
Het is mogelijk om het standaardgedrag te wijzigen als u gegevens laadt die u in Parquet wilt opslaan. U kunt instellen dat uw gegevenstype wordt gewijzigd of u kunt gegevens taggen om specifieke kolomtypen in Parquet af te dwingen.
Gegevens opmaken voor opslag in Parquet
U kunt Qlik Sense-opmaakfuncties gebruiken om uw gegevens te classificeren. Text(), Num(), Interval() of Timestamp() kunnen bijvoorbeeld gegevensopmaak afdwingen bij het opslaan van gegevens in Parquet. Qlik Sense kan gegevens opslaan in bijna 20 gegevenstypen, afhankelijk van de veldkenmerken en automatische veldtags. Ga voor meer informatie naar Interpretatiefuncties.
Voorbeeld: Gegevens opmaken met Num() en Text()
Het volgende voorbeeld toont hoe u gegevens voorbereidt die u wilt opslaan in Parquet. Num() wordt toegepast op het getalveld. Text() wordt toegepast op tekst en gemengd. In het geval van een gemengd veld, voorkomt Text() dat het wordt verwerkt als een getalveld in Parquet en worden de tekstwaarden gewijzigd in null-waarden.
NoConcatenate LOAD num, text, Text(mixed) as mixed RESIDENT Data; STORE Format INTO [lib://DataFiles/Tmp.parquet] (parquet);
Gegevens taggen voor opslag in Parquet
U tagt uw gegevens met $parquet-tags om specifieke kolomtypen af te dwingen bij het opslaan van gegevens in Parquet. Elk gegevenstype kan worden afgedwongen door de bijbehorende controletag toe te voegen. Stel dat u een veld als INT32 in Parquet wilt opslaan, tag dit dan met $parquet-int32 in het load-script. Afhankelijk van het gegevenstype wordt de tekenreeks of de numerieke weergave van de dubbele gegevens opgeslagen.
U kunt de volgende Parquet-controletag gebruiken om velden te taggen voor opslag in Parquet-bestanden.
Controletag | Dual | Fysiek type | Logisch type | Geconverteerd type |
---|---|---|---|---|
$parquet-boolean | Getal | BOOLEAN | NONE | NONE |
$parquet-int32 | Getal | INT32 | NONE | NONE |
$parquet-int64 | Getal | INT64 | NONE | NONE |
$parquet-float | Getal | FLOAT | NONE | NONE |
$parquet-double | Getal | DOUBLE | NONE | NONE |
$parquet-bytearray | Tekenreeks | BYTE_ARRAY | NONE | UTF8 |
$parquet-bytearrayfix | Getal | FIXED_LEN_BYTE_ARRAY | NONE | DECIMAL |
$parquet-decimal | Getal | INT64 | DECIMAL | DECIMAL |
$parquet-date | Getal | INT32 | Date | Date |
$parquet-time | Getal | INT64 | TIME | TIME_MICROS |
$parquet-timestamp | Getal | INT64 | TIMESTAMP | TIMESTAMP_MICROS |
$parquet-string | Tekenreeks | BYTE_ARRAY | STRING | UTF8 |
$parquet-enum | Tekenreeks | BYTE_ARRAY | ENUM | ENUM |
$parquet-interval | Getal | FIXED_LEN_BYTE_ARRAY | INTERVAL | INTERVAL |
$parquet-json | Tekenreeks | BYTE_ARRAY | JSON | JSON |
$parquet-bson | Tekenreeks | BYTE_ARRAY | BSON | BSON |
$parquet-uuid | Tekenreeks | FIXED_LEN_BYTE_ARRAY | UUID | NONE |
Voorbeeld: Gegevens taggen voor opslag in Parquet
In dit voorbeeld worden twee tags gebruikt om de gegevens voor Parquet te definiëren. Het veld num is getagd met $parquet-int32 om het te definiëren als getalveld dat in Parquet als INT32 wordt ingesteld.