

# Iceberg テーブルのクエリパフォーマンスの最適化
<a name="iceberg-column-statistics"></a>

Apache Iceberg は、膨大な分析データセット用の高性能なオープンテーブル形式です。AWS Glue は、Iceberg テーブルの各列に対する個別の値の数 (NDV) の計算と更新をサポートしています。これらの統計により、大規模データセットを扱うデータエンジニアやサイエンティストにとって、クエリの最適化、データ管理、パフォーマンス効率が改善されます。

 AWS Glue は、Iceberg テーブルの各列の個別の値の数を推定し、Iceberg テーブルスナップショットに関連付けられた Amazon S3 の [Puffin](https://iceberg.apache.org/puffin-spec/) ファイルに保存します。Puffin は、インデックス、統計、スケッチなどのメタデータを保存するように設計された Iceberg ファイル形式です。スナップショットに関連付けられた Puffin ファイルにスケッチを保存すると、トランザクションの一貫性と NDV 統計の鮮度が確保されます。

AWS Glue コンソールまたは AWS CLI を使用して列統計生成タスクを実行するように設定できます。プロセスを開始すると、AWS Glue はバックグラウンドで Spark ジョブを開始し、データカタログ内の AWS Glue テーブルメタデータを更新します。列統計は、AWS Glue コンソールもしくは AWS CLI を使用して、または [GetColumnStatisticsForTable](https://docs.aws.amazon.com/glue/latest/webapi/API_GetColumnStatisticsForTable.html) API オペレーションを呼び出すことによって表示できます。

**注記**  
AWS Lake Formation の許可を使用してテーブルに対するアクセスを制御している場合、列統計タスクによって引き受けられるロールには、統計を生成するための完全なテーブルアクセスが必要です。

**Topics**
+ [列統計を生成するための前提条件](iceberg-column-stats-prereqs.md)
+ [Iceberg テーブルの列統計の生成](iceberg-generate-column-stats.md)
+ [関連情報](#see-also-iceberg-stats)

# 列統計を生成するための前提条件
<a name="iceberg-column-stats-prereqs"></a>

Iceberg テーブルの列統計を生成または更新するために、統計生成タスクはユーザーに代わって AWS Identity and Access Management (IAM) ロールを引き受けます。ロールに付与された許可に基づいて、列統計生成タスクは Amazon S3 データストアからデータを読み取ることができます。

AWS Glue では、列統計生成タスクを設定するときに、`AWSGlueServiceRole` AWS 管理ポリシーと指定されたデータソースに必要なインラインポリシーを含むロールを作成できます。

列統計の生成に既存のロールを指定する場合は、そのロールに `AWSGlueServiceRole` ポリシーまたは同等のポリシー (またはこのポリシーのスコープダウンバージョン) と、必要なインラインポリシーが含まれてることを確認します。

必要な許可の詳細については、「[列統計を生成するための前提条件](column-stats-prereqs.md)」を参照してください。

# Iceberg テーブルの列統計の生成
<a name="iceberg-generate-column-stats"></a>

以下の手順に従って、AWS Glue コンソールまたは AWS CLI を使用してデータカタログで統計を生成するスケジュールを設定するか、**StartColumnStatisticsTaskRun** オペレーションを実行します。

**列統計を生成するには**

1. AWS Glue コンソール ([https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)) にサインインします。

1. [データカタログ] の下の **[テーブル]** を選択します。

1. リストから Iceberg テーブルを選択します。

1. **[アクション]** メニューで、**[列の統計]** の **[オンデマンドで生成]** を選択します。

   **[テーブル]** ページの下のセクションにある **[列統計]** タブで **[統計を生成]** ボタンを選択することもできます。

1. **[統計を生成]** ページで、統計の生成の詳細を入力します。「[スケジュールで列統計の生成](generate-column-stats.md)」セクションのステップ 6～11 に従って、Iceberg テーブルの統計生成にスケジュールを設定します。

   [オンデマンドでの列統計の生成](column-stats-on-demand.md) の手順に従って、オンデマンドで列統計を生成することも選択できます。
**注記**  
[サンプリング] オプションは Iceberg テーブルでは使用できません。

   AWS Glue は、Amazon S3 の場所内の指定されたスナップショット ID にコミットされた新しい Puffin ファイルに対して、Iceberg テーブルの各列にある個別の値の数を計算します。

## 関連情報
<a name="see-also-iceberg-stats"></a>
+ [列統計の表示](view-column-stats.md)
+ [列統計タスクの実行の表示](view-stats-run.md)
+ [列統計タスクの実行の停止](stop-stats-run.md)
+ [列統計の削除](delete-column-stats.md)