Apache Parquet ファイルでの作業
Apache Parquet は、大きいデータセットの保存とクエリに非常に効率的な列型ストレージ フォーマットです。Qlik Sense では、Parquet ファイルからのデータを読み込み、Parquetファイルとしてテーブルを保存できます。
Parquet を使用すると、テーブル全体を読み込むのではなく、テーブル内の特定の列を効率的にクエリできます。これは、大きなデータの処理に適しています。また、Parquet はデータの効率的な圧縮とエンコーディングをサポートします。これにより、さらにストレージ スペースを削減して、クエリ パフォーマンスを改善できます。
Parquet ファイルの作成
スクリプトで Store コマンドを使用して Parquet ファイルを作成できます。スクリプトで、以前に読み取ったテーブルまたはその一部を、選択した場所にある明示的に指定されたファイルにエクスポートするように記述します。Parquet ファイルのデータに保存するデータをネストできます。
詳細については、「Store」を参照してください。
Parquet ファイルからのデータのロード
Parquet ファイルからのデータを、Qlik Sense でサポートされているその他のデータと同様に読み込むことができます。これには、データ マネージャー、データ ロード エディター、またはデータを新しいアプリに追加するタイミングが含まれます。
詳細については、「ファイルからのデータのロード」を参照してください。
また、LOAD コマンドを使って、Parquet ファイルからのデータをデータ ロード スクリプトにロードできます。例:
詳細については、「 Load」を参照してください。
ネストされた Parquet ファイルからのデータのロード
Parquet ファイルにネストされたデータが含まれている場合は、複数の Load ステートメントでロードする必要があり、各テーブルにどのサブセットをロードするかを指定します。Table is 指定子は、ロードされるスキーマのグループ ノードへのパスを証明するために使用されます。
Table is パスに一致するノードのみがロードされます。
データ ノードはネストなしでファイルにロードされます。
グループ ノードは、項目名に名前を追加することで、グループ内の項目をグループ化します。たとえば、field1 と field2 を含むグループは、group.field1 および group.field2 としてロードされます。
リスト ノードは、テーブルのリンクに使用されるキー項目を生成します。例: %Key_group.list。 リスト内のグループまたはデータ ノードは、別の Load ステートメントでロードする必要があります。親リストへのキー項目も追加されます。
次の例では、ネストされたデータを Parquet ファイルに保存する の例で作成されたのと同じネストされた Parquet ファイルを、データ マネージャー と データ ロード エディター を使用してアプリにロードしたものを示しています (選択データとカスタム スクリプトによる既定のスクリプトを使用)。
データ マネージャー
データ マネージャー で customer.parquet を ロードし、推奨される関連付けをすべて適用すると、次のデータ モデルが得られます。
データ ロード エディター (データを選択)
データ ロード エディター で [データを選択] を使用してデータをロードすると、次のスクリプトが作成されます。
データ モデル ビューア のデータ モデルは次のようになります。
データ ロード エディター (カスタム ロード スクリプト)
カスタム ロード スクリプトを使用すると、項目とテーブルが customer.parquet からロードされる方法をより詳細に制御できます。次のロード スクリプトは、company.parquet からテーブルと項目をロードします。
これにより、次のデータ モデルが作成されます。これは、データが Parquet ファイルに保存される前の元のデータ モデルと同一です。
制限事項
Parquet には、次の制限事項があります。
-
int96 タイムスタンプ フィールドを含む Parquet ファイルは、正しくロードされない可能性があります。
Int96 は、タイムゾーン情報を含まないタイムスタンプを含む非推奨のデータ型です。フィールドを UTC として読み込むよう試行されますが、異なるベンダー実装があるため、成功は保証されません。
ロードされたデータを検証して、必要に応じてオフセットを使い、正しいタイムゾーンに合わせて調整します。