# Apache Parquet ファイルでの作業

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

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

情報メモAugust 2023より前の Qlik Sense のバージョンで作成されたすべての既存のアプリは、Parquet のサポートを有効にするために手動で更新する必要があります。これは、August 2023 にアップグレードする展開と、既存のアプリを新しい展開にインポートする場合の両方で必要になります。アプリの更新の詳細については、「[Qlik Sense で既存のアプリに対する Parquet ファイルのサポートを有効にする](https://community.qlik.com/t5/Official-Support-Articles/Enable-parquet-file-support-for-existing-Apps-in-Qlik-Sense/ta-p/2083285)」を参照してください。

## Parquet ファイルの作成

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

詳細については、「[Store](https://help.qlik.com/ja-JP/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Store.htm)」を参照してください。

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

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

詳細については、「[ファイルからのデータのロード](https://help.qlik.com/ja-JP/sense/November2025/Subsystems/Hub/Content/Sense_Hub/DataSource/load-data-from-files.htm)」を参照してください。

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

```
LOAD  * from xyz.parquet (parquet);
```

詳細については、「[Load](https://help.qlik.com/ja-JP/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Load.htm)」を参照してください。

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

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

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

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

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

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

次の例では、[ネストされたデータを Parquet ファイルに保存する](https://help.qlik.com/ja-JP/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Store.htm#Storing) の例で作成されたのと同じネストされた Parquet ファイルを、データ マネージャー と データ ロード エディター を使用してアプリにロードしたものを示しています (選択データとカスタム スクリプトによる既定のスクリプトを使用)。

データ マネージャー

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

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

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

データ マネージャーデータ マネージャー を使用して company.parquetcompany.parquet をロードするためのデータ モデル ![company:salesrep.salesrep、company、company:headquard.headquard、company:headquard.headquart.city:region.region のテーブルを示すデータ モデル](https://help.qlik.com/ja-JP/sense/November2025/Subsystems/Hub/Content/Resources/Images/ex_parquet-load-script-dm-dmv.png)

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

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

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

LOAD
region,
"%Key_city:region"
FROM [lib://AttachedFiles/company.parquet] (parquet, table is [company:headquarter.headquarter.city:region.region]);

LOAD
salesrep,
"%Key_company:salesrep"

FROM [lib://AttachedFiles/company.parquet] (parquet, table is [company:salesrep.salesrep]);
```

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

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

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

データ ロード エディターデータ ロード エディター で [データを選択データを選択] を使用して company.parquet をロードするためのデータ モデル ![salesrep、company、headquarter、region のテーブルを示すデータ モデル。](https://help.qlik.com/ja-JP/sense/November2025/Subsystems/Hub/Content/Resources/Images/ex_parquet-load-select-dmv.png)

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

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

```
LOAD * FROM [lib://AttachedFiles/company.parquet] (parquet);
LOAD *, Lookup('company', '%Key_company:salesrepo', [%Key_company:salesrep], 'company') as company;
LOAD * FROM [lib://AttachedFiles/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://AttachedFiles/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://AttachedFiles/company.parquet] (parquet, table is [company:headquarter.headquarter.city:region.region]);
DROP FIELD [%Key_city:region]; 
```

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

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

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

データ ロード エディターデータ ロード エディター でカスタム スクリプトを使用して company.parquetcompany.parquet をロードするためのデータ モデル ![headquarter、region、salesrep、company の各テーブルを持つデータ モデル。ソース アプリのデータ モデルを正確にミラーリングします。](https://help.qlik.com/ja-JP/sense/November2025/Subsystems/Hub/Content/Resources/Images/ex_parquet-load-script-dmv.png)

## 制限事項

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

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

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

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