

# 按需生成列统计数据
<a name="column-stats-on-demand"></a>

您可以按需为 AWS Glue Data Catalog 表任务运行列统计任务，无需设定计划。此选项对于临时分析或需要立即计算统计数据的场景非常实用。

按照以下步骤，使用 AWS Glue 控制台或 AWS CLI 按需为 Data Catalog 表生成列统计数据。

------
#### [ AWS 管理控制台 ]

**使用控制台生成列统计数据**

1. 通过以下网址登录到 AWS Glue 控制台：[https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)。

1. 选择 Data Catalog 表。

1.  从列表中选择一个表。

1. 在**操作**菜单下选择**生成统计数据**。

   您也可以选择**表**页面下半部分的**列统计数据**选项卡，然后选择**生成**、**按需生成**选项。

1. 按照[按计划生成列统计数据](generate-column-stats.md)中第 7-11 步的说明操作，生成表的列统计数据。

1. 在**生成统计数据**页面上，请指定以下选项：  
![\[此屏幕截图显示了可用于生成列统计数据的选项。\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/generate-column-stats.png)
   + **所有列** – 选择此选项可生成表中所有列的统计信息。
   + **选定列** – 选择此选项可生成特定列的统计数据。您可以从下拉列表中选择列。
   + **IAM 角色**：选择**创建新 IAM 角色**，该角色应具有运行列统计数据生成任务所需的权限策略。选择“查看权限详细信息”，查看政策声明。您还可以从列表中选择 IAM 角色。有关所需权限的更多信息，请参阅 [生成列统计数据的先决条件](column-stats-prereqs.md)。

     AWS Glue 代入您指定的角色权限，生成统计信息。

     有关为 AWS Glue 提供角色的更多信息，请参阅 [Identity-based policies for 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 控制台显式运行**生成统计数据**任务才能刷新列统计数据。Data Catalog 不会自动刷新统计数据。

如果您未使用控制台的使用 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
                }
            }
        }
    ]
}
```