Store
Store ステートメントは、QVD、Parquet、CSV、または TXT ファイルを作成します。
構文:
Store [ fieldlist from] table into filename [ format-spec ];
このステートメントにより、明示的に命名された QVD、Parquet、またはテキスト ファイルが作成されます。
項目のエクスポートは 1 つのデータ テーブルからのみ行えます。エクスポートする項目が複数のテーブルに存在する場合、スクリプトで明示的に 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 codec) |
これらのファイル形式のいずれかに書式指定を設定できます。書式指定が省略されている場合は、qvd で処理されます。
parquet を使用する場合、[圧縮は] で使用する圧縮コーデックを設定することもできます。[圧縮は] で圧縮コーデックを指定しない場合、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、ダブル、日付と時刻、テキストなど)が 1 つずつ保存されます。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 タグをデータに付けます。各データ型は、対応するコントロール タグを追加することで強制できます。例えば、項目を INT32 としてParquet に保存するには、ロード スクリプトで $parquet-int32 のタグを付けます。データ型によって、文字列か数値表現のどちらかのデュアル データが保存されます。
以下の Parqeut コントロール タグは、Parquet ファイルに保存する項目のタグ付けに使用できます。
コントロール タグ | デュアル | 物理型 | 論理型 | 変換型 |
---|---|---|---|---|
$parquet-boolean | 数値 | BOOLEAN | NONE | NONE |
$parquet-int32 | 数値 | INT32 | NONE | NONE |
$parquet-int64 | 数値 | INT64 | NONE | NONE |
$parquet-float | 数値 | FLOAT | NONE | NONE |
$parquet-double | 数値 | DOUBLE | NONE | NONE |
$parquet-bytearray | 文字列 | BYTE_ARRAY | NONE | UTF8 |
$parquet-bytearrayfix | 数値 | FIXED_LEN_BYTE_ARRAY | NONE | DECIMAL |
$parquet-decimal | 数値 | INT64 | DECIMAL | DECIMAL |
$parquet-date | 数値 | INT32 | DATE | DATE |
$parquet-time | 数値 | INT64 | TIME | TIME_MICROS |
$parquet-timestamp | 数値 | INT64 | TIMESTAMP | TIMESTAMP_MICROS |
$parquet-string | 文字列 | BYTE_ARRAY | STRING | UTF8 |
$parquet-enum | 文字列 | BYTE_ARRAY | ENUM | ENUM |
$parquet-interval | 数値 | FIXED_LEN_BYTE_ARRAY | INTERVAL | INTERVAL |
$parquet-json | 文字列 | BYTE_ARRAY | JSON | JSON |
$parquet-bson | 文字列 | BYTE_ARRAY | BSON | BSON |
$parquet-uuid | 文字列 | FIXED_LEN_BYTE_ARRAY | UUID | NONE |
Parquet に保存するためのデータのタグ付け
この例では、2 つのタグを使って Parquet 用のデータを定義しています。フィールド num は $parquet-int32 とタグ付けされ、Parquet では INT32 として設定される数値フィールドとして定義されます。