Ga naar hoofdinhoud Ga naar aanvullende inhoud

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.

InformatieIn sommige gevallen met gegevens die niet goed gevormd zijn, worden velden tussen dubbele aanhalingstekens geplaatst om er zeker van te zijn dat de gegevens correct worden geïnterpreteerd. Dit kan bijvoorbeeld gebeuren als het veld tekens bevat zoals aanhalingstekens, komma's, spaties of regeleinden.

Argumenten:  

Opdrachtargumenten opslaan
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:

  • absoluut

    Voorbeeld: c:\data\sales.qvd

  • relatief ten opzichte van de werkmap van de Qlik Sense-app.

    Voorbeeld: data\sales.qvd

    Als er geen pad is opgegeven, bewaart Qlik Sense het bestand in de map die wordt gespecificeerd in de Directory-instructie. Als er geen Directory-instructie is opgegeven, bewaart Qlik Sense het bestand in de werkmap, C:\Users\{user}\Documents\Qlik\Sense\Apps.

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.

  • txt voor CSV en TXT-bestanden.

  • qvd voor QVD-bestanden.

  • parquet voor Parquet-bestanden.

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:

  • uncompressed

  • snappy

  • gzip

  • lz4

  • brotli

  • zstd

  • lz4_hadoop

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

InformatieBestandsextensies van DataFiles-verbindingen zijn hoofdlettergevoelig. Bijvoorbeeld: .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.

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

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.

Parquet-controletags
ControletagDualFysiek typeLogisch typeGeconverteerd type
$parquet-booleanGetalBOOLEANNONENONE
$parquet-int32GetalINT32NONENONE
$parquet-int64GetalINT64NONENONE
$parquet-floatGetalFLOATNONENONE
$parquet-doubleGetalDOUBLENONENONE
$parquet-bytearrayTekenreeksBYTE_ARRAYNONEUTF8
$parquet-bytearrayfixGetalFIXED_LEN_BYTE_ARRAYNONEDECIMAL
$parquet-decimalGetalINT64DECIMALDECIMAL
$parquet-dateGetalINT32DateDate
$parquet-timeGetalINT64TIMETIME_MICROS
$parquet-timestampGetalINT64TIMESTAMPTIMESTAMP_MICROS
$parquet-stringTekenreeksBYTE_ARRAYSTRINGUTF8
$parquet-enumTekenreeksBYTE_ARRAYENUMENUM
$parquet-intervalGetalFIXED_LEN_BYTE_ARRAYINTERVALINTERVAL
$parquet-jsonTekenreeksBYTE_ARRAYJSONJSON
$parquet-bsonTekenreeksBYTE_ARRAYBSONBSON
$parquet-uuidTekenreeksFIXED_LEN_BYTE_ARRAYUUIDNONE

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.

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

Was deze pagina nuttig?

Als u problemen ervaart op deze pagina of de inhoud onjuist is – een typfout, een ontbrekende stap of een technische fout – laat het ons weten zodat we dit kunnen verbeteren!