Store
Store 陳述式建立 QVD、Parquet、CSV 或 TXT 檔案。
語法:
Store [ fieldlist from] table into filename [ format-spec ];
該陳述式將建立明確命名的 QVD、Parquet 或文字檔案。
陳述式只能從一個資料表格匯出欄位。如果要匯出數個表格中的欄位,則必須在指令碼中提前進行明確 join,以建立應該匯出的資料表格。
文字值會以 UTF-8 格式匯出到 CSV 檔案中。可指定分隔符號,請參閱 LOAD。在 CSV 檔案中使用 store 陳述式不支援 BIFF 匯出。
引數:
引數 | 描述 |
---|---|
fieldlist::= ( * | field) { , field } ) |
要選取的欄位清單。使用 * 做為欄位清單表示所有欄位。 field::= fieldname [as aliasname ] fieldname 是與 table 中欄位名稱相同的文字。(請注意,欄位名稱如果包含空格或其他非標準字元,則必須以一般雙引號或方括弧括住。) aliasname 是在所產生 QVD 或 CSV 檔案中要使用之欄位的替代名稱。 |
table | 代表已經載入的表格 (用作資料來源) 的指令碼標籤。 |
filename |
包括通向現有資料夾資料連線的有效路徑的目標檔案的名稱。 範例: 'lib://Table Files/target.qvd' 在舊式指令碼模式下,還支援下列路徑格式:
|
format-spec ::=( ( txt | qvd | parquet),compression is 轉碼器) |
您可以將格式規格設定為其中任一個檔案格式。若省略格式規格,會採用 qvd。
若您使用 parquet,您也可以設定要搭配 compression is 使用哪個壓縮轉碼器。若您沒有透過 compression is 指定壓縮轉碼器,則會使用 snappy。提供下列壓縮設定:
範例: Store mytable into [lib://DataFiles/myfile.parquet] (parquet, compression is lz4); |
範例:
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';
儲存在 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 值的文字值。
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-boolean | 數字 | 布林 | 無 | 無 |
$parquet-int32 | 數字 | INT32 | 無 | 無 |
$parquet-int64 | 數字 | INT64 | 無 | 無 |
$parquet-float | 數字 | 浮動 | 無 | 無 |
$parquet-double | 數字 | 雙重 | 無 | 無 |
$parquet-bytearray | 字串 | BYTE_ARRAY | 無 | UTF8 |
$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_ARRAY | ENUM | ENUM |
$parquet-interval | 數字 | FIXED_LEN_BYTE_ARRAY | 間隔 | 間隔 |
$parquet-json | 字串 | BYTE_ARRAY | JSON | JSON |
$parquet-bson | 字串 | BYTE_ARRAY | BSON | BSON |
$parquet-uuid | 字串 | FIXED_LEN_BYTE_ARRAY | UUID | 無 |
範例: 標記資料以儲存於 Parquet
在此範例中,兩個標記用來定義 Parquet 的資料。欄位 num 以 $parquet-int32 標記,以定義為將會在 Parquet 設定為 INT32 的數字欄位。