メイン コンテンツをスキップする 補完的コンテンツへスキップ

Apache Parquet ファイルでの作業

Apache Parquet は、大きいデータセットの保存とクエリに非常に効率的な列型ストレージ フォーマットです。Qlik Sense では、Parquet ファイルからのデータを読み込み、Parquetファイルとしてテーブルを保存できます。

Parquet を使用すると、テーブル全体を読み込むのではなく、テーブル内の特定の列を効率的にクエリできます。これは、大きなデータの処理に適しています。また、Parquet はデータの効率的な圧縮とエンコーディングをサポートします。これにより、さらにストレージ スペースを削減して、クエリ パフォーマンスを改善できます。

Parquet ファイルの作成

スクリプトで Store コマンドを使用して Parquet ファイルを作成できます。スクリプトで、以前に読み取ったテーブルまたはその一部を、選択した場所にある明示的に指定されたファイルにエクスポートするように記述します。Parquet ファイルのデータに保存するデータをネストできます。

詳細については、「Store」を参照してください。

Parquet ファイルからのデータのロード

Parquet ファイルからのデータを、Qlik Sense でサポートされているその他のデータと同様に読み込むことができます。これには、データ マネージャーデータ ロード エディター、またはデータを新しいアプリに追加するタイミングが含まれます。

詳細については、「ファイルからのデータのロード」を参照してください。

また、LOAD コマンドを使って、Parquet ファイルからのデータをデータ ロード スクリプトにロードできます。例:

LOAD * from [lib://DataFiles/xyz.parquet] (parquet);

詳細については、「 Load」を参照してください。

ネストされた Parquet ファイルからのデータのロード

Parquet ファイルにネストされたデータが含まれている場合は、複数の Load ステートメントでロードする必要があり、各テーブルにどのサブセットをロードするかを指定します。Table is 指定子は、ロードされるスキーマのグループ ノードへのパスを証明するために使用されます。

指定子 Delimiter is を使用してノードの結合方法を指定できます。区切り記号を含まないネストされたデータのあるファイルをロードする LOAD ステートメントは、スクリプト変数 FieldNameDelimiter で指定された値を使用します。区切り記号がなく、FieldNameDelimiter が設定されていない場合、既定の区切り記号は '.' になります。

Table is パスに一致するノードのみがロードされます。

データ ノードはネストなしでファイルにロードされます。

グループ ノードは、項目名に名前を追加することで、グループ内の項目をグループ化します。たとえば、field1field2 を含むグループは、group.field1 および group.field2 としてロードされます。

リスト ノードは、テーブルのリンクに使用されるキー項目を生成します。例: %Key_group.list。 リスト内のグループまたはデータ ノードは、別の Load ステートメントでロードする必要があります。親リストへのキー項目も追加されます。

次の例では、ネストされたデータを Parquet ファイルに保存する の例で作成されたのと同じネストされた Parquet ファイルを、データ マネージャーデータ ロード エディター を使用してアプリにロードしたものを示しています (選択データとカスタム スクリプトによる既定のスクリプトを使用)。

データ マネージャー

データ マネージャーcustomer.parquet を ロードし、推奨される関連付けをすべて適用すると、次のデータ モデルが得られます。

データ マネージャー を使用して company.parquet をロードするためのデータ モデル

company:salesrep.salesrep、company、company:headquard.headquard、company:headquard.headquart.city:region.region のテーブルを示すデータ モデル

データ ロード エディター (データを選択)

データ ロード エディター で [データを選択] を使用してデータをロードすると、次のスクリプトが作成されます。

LOAD company, contact, "%Key_company:headquarter", "%Key_company:salesrep" FROM [lib://DataFiles/company.parquet] (parquet); LOAD country, city, "%Key_city:region", "%Key_company:headquarter" FROM [lib://DataFiles/company.parquet] (parquet, table is [company:headquarter.headquarter]); LOAD region, "%Key_city:region" FROM [lib://DataFiles/company.parquet] (parquet, table is [company:headquarter.headquarter.city:region.region]); LOAD salesrep, "%Key_company:salesrep" FROM [lib://DataFiles/company.parquet] (parquet, table is [company:salesrep.salesrep]);

データ モデル ビューアー のデータ モデルは次のようになります。

データ ロード エディター で [データを選択] を使用して company.parquet をロードするためのデータ モデル

salesrep、company、headquarter、region のテーブルを示すデータ モデル。

データ ロード エディター (カスタム ロード スクリプト)

カスタム ロード スクリプトを使用すると、項目とテーブルが customer.parquet からロードされる方法をより詳細に制御できます。次のロード スクリプトは、company.parquet からテーブルと項目をロードします。

LOAD * FROM [lib://DataFiles/company.parquet] (parquet); LOAD *, Lookup('company', '%Key_company:salesrepo', [%Key_company:salesrep], 'company') as company; LOAD * FROM [lib://DataFiles/company.parquet] (parquet, table is [company:salesrep.salesrep]); DROP FIELD [%Key_company:salesrep]; LOAD *, Lookup('company', '%Key_company:headquarter', [%Key_company:headquarter], 'company') as company; LOAD * FROM [lib://DataFiles/company.parquet] (parquet, table is [company:headquarter.headquarter]); DROP FIELD [%Key_company:headquarter]; LOAD *, Lookup('city', '%Key_city:region', [%Key_city:region], 'headquarter') as city; LOAD * FROM [lib://DataFiles/company.parquet] (parquet, table is [company:headquarter.headquarter.city:region.region]); DROP FIELD [%Key_city:region];

これにより、次のデータ モデルが作成されます。これは、データが Parquet ファイルに保存される前の元のデータ モデルと同一です。

データ ロード エディター でカスタム スクリプトを使用して company.parquet をロードするためのデータ モデル

headquarter、region、salesrep、company の各テーブルを持つデータ モデル。ソース アプリのデータ モデルを正確にミラーリングします。

制限事項

Parquet には、次の制限事項があります。

  • int96 タイムスタンプ フィールドを含む Parquet ファイルは、正しくロードされない可能性があります。

    Int96 は、タイムゾーン情報を含まないタイムスタンプを含む非推奨のデータ型です。フィールドを UTC として読み込むよう試行されますが、異なるベンダー実装があるため、成功は保証されません。

    ロードされたデータを検証して、必要に応じてオフセットを使い、正しいタイムゾーンに合わせて調整します。

このページは役に立ちましたか?

このページまたはコンテンツに、タイポ、ステップの省略、技術的エラーなどの問題が見つかった場合は、お知らせください。改善に役立たせていただきます。