跳到主要內容 跳至補充內容

Store

Store 陳述式建立 QVDParquetCSVTXT 檔案。

語法:  

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

該陳述式將建立明確命名的 QVDParquet 或文字檔案。

陳述式只能從一個資料表格匯出欄位,除非您儲存至 Parquet。如果要將數個表格中的欄位匯出至 QVD、CSV 或 TXT 檔案,則必須在指令碼中提前進行明確 join,以建立應該匯出的資料表格。您可以在 Parquet 檔案中內嵌資料,以在單一 Parquet 中儲存多個表格。

文字值會以 BOM 格式匯出到 UTF-8 中的 CSV 檔案中。可指定分隔符號,請參閱 LOAD。在 CSV 檔案中使用 store 陳述式不支援 BIFF 匯出。

資訊備註在某些資料格式不正確的情況下,將會以雙引號括起欄位,以確保正確解譯資料。例如,若欄位包含引號、逗號、空格或分行符號等字元,就可能發生此情況。

您可以指定要將檔案儲存於個人空間或您有寫入權限的共用空間。若您儲存在共用空間,成員可以使用該資料以在空間中建立應用程式。請參閱:在共用空間中管理權限

引數:  

儲存命令引數
引數 描述
fieldlist::= ( * | field) { , field } )

要選取的欄位清單。使用 * 做為欄位清單表示所有欄位。 

field::= fieldname [as aliasname ]

fieldname 是與 table 中欄位名稱相同的文字。(請注意,欄位名稱如果包含空格或其他非標準字元,則必須以一般雙引號或方括弧括住。)

aliasname 是在所產生 QVDCSV 檔案中要使用之欄位的替代名稱。

table 代表已經載入的表格 (用作資料來源) 的指令碼標籤。
filename

包括通向現有資料夾資料連線的有效路徑的目標檔案的名稱。 如需關於什麼被視為有效路徑的具體資訊,請參閱 有效空間資料夾路徑的規則。

Qlik Cloud 分析 中,支援階層資料夾結構,可以在陳述式中參考。

範例:  

  • 個人空間 (上層路徑):[lib://DataFiles/abc.qvd]

  • 個人空間 (巢狀資料夾):[lib://DataFiles/MyFolder/abc.qvd]

  • 共用空間 (上層路徑):[lib://TeamSharedSpace:DataFiles/xyz.qvd]

  • 共用空間 (巢狀資料夾):[lib://TeamSharedSpace:DataFiles/MyFolder/abc.qvd]

如需更多資訊和範例,請參閱 在 Qlik Cloud 分析 中將檔案儲存到空間

format-spec ::=( ( txt | qvd | parquet),compression is 轉碼器)

您可以將格式規格設定為其中任一個檔案格式。若省略格式規格,會採用 qvd

  • CSVTXT 檔案的 txt

  • qvd 適用於 QVD 檔案。

  • parquet 適用於 Parquet 檔案。

若您使用 parquet,您也可以設定要搭配 compression is 使用哪個壓縮轉碼器。若您沒有透過 compression is 指定壓縮轉碼器,則會使用 snappy。提供下列壓縮設定:

  • uncompressed

  • snappy

  • gzip

  • lz4

  • brotli

  • zstd

  • lz4_hadoop

範例:

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

資訊備註DataFiles 連線的檔案延伸區分大小寫。例如:.qvd

範例:  

Store mytable into [lib://DataFiles/xyz.qvd];

Store * from mytable into [lib://DataFiles/myfile.qvd];

Store Name, RegNo from mytable into [lib://DataFiles/xyz.qvd];

Store Name as a, RegNo as b from mytable into [lib://DataFiles/myfile.qvd];

Store mytable into [lib://DataFiles/myfile.txt] (txt);

Store mytable into [lib://DataFiles/myfile.parquet] (parquet);

Store * from mytable into [lib://DataFiles/myfile.csv] (txt);

Store * from mytable into [lib://TeamSharedSpace:DataFiles/myfile.qvd];

儲存在 Parquet 檔案中

Parquet 是強力輸入的檔案格式,其中每個欄位包含單一特定資料類型 (例如 in32、雙重、時間戳記或文字)。Qlik Sense 將內部資料儲存為鬆散輸入的雙重內容,其中來自不同來源的資料可以混合到相同的欄位中。由於 Parquet 的每個欄位中只能儲存一個雙重部分,知道每個欄位包含的內容很重要。依照預設,Qlik Sense 使用欄位類型決定應如何儲存欄位。以特定格式在 Parquet 檔案中儲存資料時,您必須指定欄位在載入時是什麼資料類型。若您嘗試以 Parquet 檔案將資料儲存到不相容的欄位中,例如在文字欄位中儲存數字或在時間戳記欄位中儲存文字,結果會是 Null 值。

載入您打算以 Parquet 儲存的資料時,可以變更預設行為。您可以格式化以變更資料類型,或標記以在 Parquet 強制特定欄類型。

格式化資料以儲存於 Parquet

您可以使用 Qlik Sense 格式化功能以分類資料。例如,Text()Num()Interval()Timestamp() 可以在以 Parquet 儲存資料時強制資料格式。Qlik Sense 可以將資料儲存到將近 20 個資料類型,視欄位屬性和自動欄位標記而定。如需詳細資訊,請參閱解譯函數

範例: Num()Text() 格式化資料

下列範例展示準備資料以儲存於 Parquet。Num() 套用至數字欄位。Text() 套用至文字和混合欄位。在混合情況下,Text() 可防止像 Parquet 中的數字欄位那樣來處理,並有變更為 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);

標記資料以儲存於 Parquet

您使用 $parquet 標記來標記資料,以便在以 Parquet 儲存資料時強制特定欄類型。新增對應的控制標記以強制每個資料類型。例如,若要在 Parquet 將欄位儲存為 INT32,在載入指令碼中以 $parquet-int32 標記。根據資料類型,將會儲存雙重資料的字串或數字呈現。

下列 Parquet 控制標記可用來標記欄位,以儲存於 Parquet 檔案。

Parquet 控制標記
控制標記雙值實際類型邏輯類型轉換類型
$parquet-boolean數字布林
$parquet-int32數字INT32
$parquet-int64數字INT64
$parquet-float數字浮動
$parquet-double數字雙重
$parquet-bytearray字串BYTE_ARRAYUTF8
$parquet-bytearrayfix數字FIXED_LEN_BYTE_ARRAY小數
$parquet-decimal數字INT64小數小數
$parquet-date數字INT32日期日期
$parquet-time數字INT64時間TIME_MICROS
$parquet-timestamp數字INT64時間戳記TIMESTAMP_MICROS
$parquet-string字串BYTE_ARRAY字串UTF8
$parquet-enum字串BYTE_ARRAYENUMENUM
$parquet-interval數字FIXED_LEN_BYTE_ARRAY間隔間隔
$parquet-json字串BYTE_ARRAYJSONJSON
$parquet-bson字串BYTE_ARRAYBSONBSON
$parquet-uuid字串FIXED_LEN_BYTE_ARRAYUUID

範例: 標記資料以儲存於 Parquet

在此範例中,兩個標記用來定義 Parquet 的資料。欄位 num$parquet-int32 標記,以定義為將會在 Parquet 設定為 INT32 的數字欄位。

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

Parquet 檔案中儲存巢狀資料

您可以將表格內嵌至結構化資料中,以在 Parquet 檔案中儲存多個表格。Store 支援結構化節點並以星狀結構描述列出節點。也可以使用 Delimiter is 說明符,以巢狀模式儲存單一表格。

儲存表格時,指定您要納入的表格並以逗號分隔。例如:STORE Table1, Table2, Table3 INTO [lib://<file location>/<file name>.parquet] (parquet);。您可以在 Store 陳述式使用欄位清單,以控制儲存哪些欄位。例如 STORE Field1, Field2, FROM Table1, Table2 INTO [lib://<file location>/<file name>.parquet] (parquet);。欄位清單中的所有欄位必須位於一個或多個列出的表格。Store 陳述式中的第一個表格將會作為星狀結構描述中的事實資料表使用。

欄位名稱用來控制如何建立和內嵌群組。依照預設,欄位名稱會以句號 (.) 分為節點。可以設定系統變數 FieldNameDelimiter 或使用說明符 Delimiter is,以變更分隔符號。說明符將會覆寫系統變數。如需詳細資訊,請參閱 在資料載入編輯器中使用變數

欄位名稱透過分隔符號分割,部分用來透過巢狀群組建立結構描述。例如,STORE Field1, Field1.Field2, Field1.Field3, Field1.Field4 FROM Table1 INTO [nested.parquet] (parquet, delimiter is '.'); 將會透過 Fields1, Field2Field3, Field4 建立兩個群組 (Group1Group2)。

資訊備註群組和欄位在結構描述的節點中可能不會有相同的名稱。例如,STORE Address, Address.Street INTO [nested.parquet] (parquet, delimiter is '.''); 將會因為地址模糊且同時為資料欄位和群組而失敗。

Parquet 儲存巢狀資料時,表格之間的金鑰會轉換為結構描述中的連結節點。表格會轉換為結構描述中的結構化節點。您可以使用欄位名稱覆寫預設轉換。

範例: Parquet 檔案中儲存巢狀資料

company: LOAD * INLINE [ company, contact A&G, Amanda Honda Cabro, Cary Frank Fenwick, Dennis Fisher Camros, Molly McKenzie ]; salesrep: LOAD * INLINE [ company, salesrep A&G, Bob Park Cabro, Cezar Sandu Fenwick, Ken Roberts Camros, Max Smith ]; headquarter: LOAD * INLINE [ company, country, city A&G, USA, Los Angeles Cabro, USA, Albuquerque Fenwick, USA, Baltimore Camros, USA, Omaha ]; region: LOAD * INLINE [ region, city West, Los Angeles Southwest, Albuquerque East, Baltimore Central, Omaha ]; STORE company, salesrep, headquarter, region INTO [lib://DataFiles/company.parquet] (parquet) DROP TABLES company, salesrep, headquarter, region;

產生的 Parquet 檔案有下列結構描述:

company (String) contact (String) company:salesrep (List) salesrep (Group) salesrep (String) company:headquarter (List) headquarter (Group) country (String) city (String) city:region (List) region (Group) region (String)

限制

Parquet 中儲存巢狀資料有下列限制:

  • 儲存不支援地圖節點。

  • 儲存不包括從載入中的巢狀 parquet 檔案產生的索引鍵欄位。

  • 您無法從表格一同儲存未與索引鍵欄位連結的資料。

  • 巢狀檔案反正規化資料模型。不會儲存非參考的值,將會複製參考多次的值。

Qlik Cloud 分析 中將檔案儲存到空間

Qlik Cloud 的載入指令碼中使用 Store 陳述式時,您可以參考要儲存所建立檔案的空間中的確切資料夾。按照有效空間資料夾路徑的規則。此外,以下行為也適用且是 Store 陳述式所獨有:

  • 如果空間存在但指定的資料夾路徑不存在,則會在空間中建立路徑。根據定義的資料夾結構,可能會建立一個或多個資料夾。會產生檔案並儲存於該處。

  • 如果空間存在,但指定的資料夾路徑使用無效的資料夾分隔符號 (例如 \\\///.//../),則仍會執行 Store 陳述式。輸出檔案會改為儲存在目標空間的上層路徑中,並且將具有包含其完整路徑的名稱,而不僅僅是指定的名稱。

  • 如果空間不存在,則 Store 陳述式無法執行並傳回錯誤。

以下範例示範如何在 Store 陳述式內參考空間中的特定資料夾路徑。

範例: 在空間上層路徑儲存檔案

在此範例中,整個表格 mytable 作為名為 myfile.qvd 的檔案匯出到 Qlik Cloud 分析 中。檔案已新增至空間 TeamSharedSpace。該檔案沒有位於任何特定資料夾中,而是位於空間中的上層路徑。

Store * from mytable into [lib://TeamSharedSpace:DataFiles/myfile.qvd];

範例: 將檔案儲存到空間內的特定資料夾路徑

在此範例中,整個表格 mytable 作為名為 myfile.qvd的檔案匯出到 Qlik Cloud 分析 中。該檔案已新增至空間 TeamSharedSpace 內的資料夾 SalesData 中。

Store * from mytable into [lib://TeamSharedSpace:DataFiles/SalesData/myfile.qvd];

如需更多關於在載入指令碼中參考空間資料夾結構的資訊,請參閱 在應用程式和指令碼開發中參考空間資料夾結構

此頁面是否對您有幫助?

若您發現此頁面或其內容有任何問題——錯字、遺漏步驟或技術錯誤——請告知我們可以如何改善!