

# オンデマンドでの列統計の生成
<a name="column-stats-on-demand"></a>

スケジュールを設定せず、AWS Glue Data Catalog テーブルタスクの列統計タスクをオンデマンドで実行できます。アドホック分析や統計をすぐに計算する必要がある場合、このオプションは便利です。

AWS Glue コンソールまたは AWS CLI を使用し、データカタログのテーブルに列統計をオンデマンドで生成するには、以下の手順を実行してください。

------
#### [ AWS マネジメントコンソール ]

**コンソールを使用して列統計を生成するには**

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

1. データカタログテーブルを選択します。

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

1. **[アクション]** メニューで **[統計を生成]** を選択します。

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

1. [スケジュールで列統計の生成](generate-column-stats.md) のステップ 7～11 に従ってテーブルの列統計を生成します。

1. **[統計を生成]** ページで、次のオプションを指定します。  
![\[このスクリーンショットは、列統計の生成に使用できるオプションを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/generate-column-stats.png)
   + **すべての列** - テーブル内のすべての列の統計を生成するには、このオプションを選択します。
   + **選択された列** – 特定の列の統計を生成するには、このオプションを選択します。ドロップダウンリストから列を選択できます。
   + **IAM ロール** – 列統計の生成タスクを実行するために必要なアクセス許可ポリシーを持つ **[新しい IAM ロールを作成]** を選択します。[アクセス許可の詳細を表示] を選択して、ポリシーステートメントを確認します。リストから IAM ロールを選択することもできます。必要な許可の詳細については、「[列統計を生成するための前提条件](column-stats-prereqs.md)」を参照してください。

     AWS Glue は、統計を生成するために指定したロールのアクセス許可を引き受けます。

     AWS Glue へのロール提供の詳細については、「[AWS Glue のアイデンティティベースポリシー」を参照してください。](https://docs.aws.amazon.com/glue/latest/dg/security_iam_service-with-iam.html#security_iam_service-with-iam-id-based-policies)
   + (オプション) 次に、ログの保管中の暗号化を有効にするセキュリティ設定を選択します。
   + **サンプル行** – テーブルから特定の割合の行のみを選択して統計を生成します。デフォルトは、すべての行です。上矢印と下矢印を使用してパーセント (%) の値を増減します。
**注記**  
正確な統計を計算するには、テーブル内のすべての行を含めることをお勧めします。近似値が許容される場合にのみ、サンプル行を使用して列統計を生成します。

   **[統計を生成]** を選択してタスクを実行します。

------
#### [ AWS CLI ]

このコマンドにより、指定されたテーブルに対して列統計タスクの実行がトリガーされます。データベース名、テーブル名、統計を生成するアクセス許可がある IAM ロールを指定する必要があり、必要に応じて統計の計算用に列名およびサンプルサイズの割合を指定します。

```
aws glue start-column-statistics-task-run \ 
    --database-name 'database_name \ 
    --table-name 'table_name' \ 
    --role 'arn:aws:iam::123456789012:role/stats-role' \
    --column-name 'col1','col2'  \
    --sample-size 10.0
```

このコマンドにより、指定されたテーブルの列統計を生成するタスクが開始されます。

------

## オンデマンドで列統計の更新
<a name="update-column-stats-on-demand"></a>

 列統計を最新に維持することは、クエリオプティマイザーが効率的な実行計画を生成し、クエリパフォーマンスの向上、リソース消費量の削減、システム全体のパフォーマンス向上を実現するうえで不可欠です。既存の統計が古くなる可能性をもたらす大幅なデータ変更 (一括のロードや広範な変更など) の後に、このプロセスは特に重要です。

列の統計を更新するには、AWS Glue コンソールから **[統計を生成]** タスクを明示的に実行する必要があります。データカタログは統計を自動的に更新しません。

コンソールで AWS Glue の統計生成機能を使用していない場合は、[UpdateColumnStatisticsForTable](https://docs.aws.amazon.com/glue/latest/webapi/API_UpdateColumnStatisticsForTable.html) API オペレーションまたは AWS CLI を使用して列統計を手動で更新できます。次の例は、AWS CLI を使用して列統計を更新する方法を示しています。

```
aws glue update-column-statistics-for-table --cli-input-json:

{
    "CatalogId": "111122223333",
    "DatabaseName": "database_name",
    "TableName": "table_name",
    "ColumnStatisticsList": [
        {
            "ColumnName": "col1",
            "ColumnType": "Boolean",
            "AnalyzedTime": "1970-01-01T00:00:00",
            "StatisticsData": {
                "Type": "BOOLEAN",
                "BooleanColumnStatisticsData": {
                    "NumberOfTrues": 5,
                    "NumberOfFalses": 5,
                    "NumberOfNulls": 0
                }
            }
        }
    ]
}
```