Gå till huvudinnehåll Gå till ytterligare innehåll

Store

Store-satsen skapar en QVD-, Parquet-,CSV- eller TXT-fil.

Syntax:  

Store [ fieldlist from] table into filename [ format-spec ];

Satsen skapar en explicit namngiven QVD-, Parquet- eller textfil.

Satsen kan endast exportera fält från en datatabell. Om fält från flera tabeller ska exporteras, måste du först göra en explicit join i skriptet för att skapa den datatabell som ska exporteras.

Textvärdena exporteras till CSV-filen i UTF-8-format. En avgränsare kan anges, se LOAD. Om store sparar till en CSV-fil stöds inte BIFF-export.

Anteckning om informationI vissa fall med data som inte är väl utformad kommer fälten att omges med dubbla citattecken för att säkerställa att data tolkas korrekt. Detta kan exempelvis hända om fältet innehåller tecken som citattecken, kommatecken, mellanslag eller radbrytningar.

Argument:  

Argument för kommandot Store
Argument Beskrivning
fieldlist::= ( * | field) { , field } )

En lista över de fält som ska väljas. Genom att använda * som fältlista anger man alla fält. 

field::= fieldname [as aliasname ]

fieldname är en text som är identisk med fältnamnet i table. (Observera att fältnamnet måste omslutas av raka, dubbla citationstecken eller av hakparenteser om det innehåller exempelvis mellanslag eller andra tecken som inte är standard.)

aliasname är ett alternativt namn för det fält som ska användas i den färdiga QVD- eller CSV-filen.

table En skriptetikett för en redan inläst tabell som ska användas som datakälla.
filename

Namnet på målfilen inkluderar en giltig sökväg till en befintlig mappdatakoppling.

Exempel: 'lib://Table Files/target.qvd'

I det bakåtkompatibla skriptläget stöds även följande sökvägsformat:

  • absolut

    Exempel: c:\data\sales.qvd

  • relativ till Qlik Sense-appens arbetskatalog.

    Exempel: data\sales.qvd

    Om sökvägen utelämnas sparar Qlik Sense filen i den mapp som specificerats av en Directory-sats. Om det inte finns någon Directory-sats, lagrar Qlik Sense filen i arbetskatalogen, C:\Users\{user}\Documents\Qlik\Sense\Apps.

format-spec ::=( ( txt | qvd | parquet), komprimering är codec)

Du kan ställa in formatspecifikationen till något av dessa filformat. Om formatspecifikationen utelämnas antas qvd.

  • txt för CSV och TXT-filer.

  • qvd för QVD-filer.

  • parquet för Parquet-filer.

Om du använder parquet kan du också ställa in vilken komprimeringskodek som ska användas med komprimering är. Om du inte anger komprimeringskodeken med komprimering är så används snappy. Följande komprimeringsinställningar är tillgängliga:

  • uncompressed

  • snappy

  • gzip

  • lz4

  • brotli

  • zstd

  • lz4_hadoop

Exempel:

Store mytable into [lib://DataFiles/myfile.parquet] (parquet, compression is lz4);

Exempel:

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

Anteckning om informationFiltillägget för DataFiles-kopplingar är skiftlägeskänsligt. Till exempel: .qvd.

Lagra i parquet-filer

Parquet är ett starkt typiserat filformat där varje fält innehåller en enda specifik typ av data (t.ex. int32, double, timestamp eller text). Qlik Sense lagrar interna data som en löst typiserad dual, där data från olika källor kan blandas i samma fält. Eftersom bara en part av dualen kan lagras i varje fält i Parquet är det viktigt att veta vad varje fält innehåller. Som standard använder Qlik Sense fälttypen för att avgöra hur fältet ska lagras. När data lagras i Parquet-filer i ett specifikt format måste du ange vilken typ av data dina fält är när de laddas. Om du försöker lagra data i inkompatibla fält i en Parquet-fil, till exempel tal i ett textfält eller text i ett tidsmarkörfält kommer du att erhålla nullvärden.

När data laddas som du tänker lagra i Parquet är det möjligt att ändra standardbeteendet. Du kan antingen formatera det så att din datatyp ändras eller tagga det för att tvinga fram specifika kolumntyper i Parquet.

Formatera data för lagring i Parquet

Du kan använda Qlik Sense formateringsfunktioner för att klassificera dina data. Text(), Num(), Interval() eller Timestamp() kan exempelvis tvinga fram dataformat när data lagras i Parquet. Qlik Sense kan lagra data i nästan 20 datatyper beroende på fältattribut och automatiska fälttaggar. Mer information finns i Tolkningsfunktioner

Exempel: Formatera data med Num() och Text()

I följande exempel presenteras dataförberedelse för lagring i Parquet. Num() tillämpas på num-fältet. Text() tillämpas på både text och blandade. Vid blandade förhindrar Text() det från att behandlas från som ett nummerfält i Parquet och att textvärdena ändras till nullvärden.

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

Tagga data för lagring i Parquet

Du taggar dina data med $parquet-taggar för att tvinga specifika kolumntyper när data lagras i Parquet. Varje datatyp kan tvingas fram genom att man lägger till motsvarande kontrolltagg. För att exempelvis lagra ett fält som INT32 i Parquet, taggar du det med $parquet-int32 i laddningsskriptet. Beroende på datatypen kommer antingen strängen eller den numeriska representationen av de duala data att lagras.

Följande Parquet-kontrolltaggar kan användas för att tagga fält för att lagra dem i Parquet-filer.

Parquet-kontrolltaggar
KontrolltaggDualFysisk typLogisk typKonverterad typ
$parquet-booleanTalBOOLEANNONENONE
$parquet-int32TalINT32NONENONE
$parquet-int64TalINT64NONENONE
$parquet-floatTalFLOATNONENONE
$parquet-doubleTalDOUBLENONENONE
$parquet-bytearraySträngBYTE_ARRAYNONEUTF8
$parquet-bytearrayfixTalFIXED_LEN_BYTE_ARRAYNONEDECIMAL
$parquet-decimalTalINT64DECIMALDECIMAL
$parquet-dateTalINT32DatumDatum
$parquet-timeTalINT64TidTIME_MICROS
$parquet-timestampTalINT64TIMESTAMPTIMESTAMP_MICROS
$parquet-stringSträngBYTE_ARRAYsträngUTF8
$parquet-enumSträngBYTE_ARRAYENUMENUM
$parquet-intervalTalFIXED_LEN_BYTE_ARRAYINTERVALINTERVAL
$parquet-jsonSträngBYTE_ARRAYJSONJSON
$parquet-bsonSträngBYTE_ARRAYBSONBSON
$parquet-uuidSträngFIXED_LEN_BYTE_ARRAYUUIDNONE

Exempel: Tagga data för lagring i Parquet

I det här exemplet används två taggar för att definiera data för Parquet. Fältet num taggas med $parquet-int32 för att definiera det som ett talfält som kommer att ställas in som INT32 i Parquet.

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

Var den här sidan till hjälp för dig?

Om du hittar några fel på denna sida eller i innehållet – ett stavfel, ett steg som saknas eller ett tekniskt fel – berätta för oss så att vi kan blir bättre!