

# 按计划生成列统计数据
<a name="generate-column-stats"></a>

请按照以下步骤，通过 AWS Glue 控制台、AWS CLI 或 [CreateColumnStatisticsTaskSettings](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-column-statistics.html#aws-glue-api-crawler-column-statistics-CreateColumnStatisticsTaskSettings) 操作在 AWS Glue Data Catalog 中配置统计数据生成计划。

------
#### [ Console ]

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

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

1. 选择 Data Catalog 表。

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

1. 在**表**页的下半部分选择**列统计数据**选项卡。

1. 您也可以从**操作**部分的**列统计数据**下选择**按计划生成**。

1. 在**按计划生成统计数据**页面上选择频率和开始时间，从而配置运行列统计任务的定期计划。您可以选择每小时、每周、每周，也可以定义 cron 表达式来指定计划。

   cron 表达式是一个表示计划模式的字符串，由 6 个字段组成，用空格隔开：\$1 \$1 \$1 \$1 \$1 <minute> <hour> <day of month> <month> <day of week> <year> 例如，要在每天午夜运行任务，cron 表达式将是：0 0 \$1 \$1 ? \$1

   有关更多信息，请参阅 [Cron 表达式](https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html#CronExpressions)。  
![\[此屏幕截图显示了可用于生成列统计数据的选项。\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/generate-column-stats-schedule.png)

1. 然后选择列选项来生成统计数据。
   + **所有列** – 选择此选项可生成表中所有列的统计信息。
   + **选定列** – 选择此选项可生成特定列的统计数据。您可以从下拉列表中选择列。

1. 选择一个 IAM 角色或创建一个具有统计数据生成权限的现有角色。AWS Glue 会代入该角色来生成列统计数据。

   一种更快的方法是让 AWS Glue 控制台为您创建一个角色。通过这种方法创建的角色专用于生成列统计数据，其中包含 `AWSGlueServiceRole` AWS 托管式策略以及指定数据来源所需的内联策略。

   如果您指定一个现有角色用于生成列统计数据，请确保它包含 `AWSGlueServiceRole` 策略或等效策略（或此策略的范围缩小版本），以及所需的内联策略。

1. （可选）然后选择一种安全配置来启用日志静态加密。

1. （可选）在指定样本容量时，您可以指定仅为表中特定百分比的行生成统计数据。默认值为所有行。使用向上和向下箭头可增加或减少百分比值。

   我们建议选择表中的所有行，以计算出准确的统计数据。仅在可接受近似值时，才使用样本行来生成列统计数据。

1. 选择**生成统计数据**，以运行列统计数据生成任务。

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

您可以使用以下 AWS CLI 示例来创建列统计数据生成计划。database-name、table-name 和 role 为必需参数，schedule、column-name-list、catalog-id、sample-size 和 security-configuration 为可选参数。

```
aws glue create-column-statistics-task-settings \ 
 --database-name 'database_name' \ 
 --table-name table_name \ 
 --role 'arn:aws:iam::123456789012:role/stats-role' \ 
 --schedule 'cron(0 0-5 14 * * ?)' \ 
 --column-name-list 'col-1' \  
 --catalog-id '123456789012' \ 
 --sample-size '10.0 ' \
 --security-configuration 'test-security'
```

您还可以通过调用 [StartColumnStatisticsTaskRun](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-column-statistics.html#aws-glue-api-crawler-column-statistics-StartColumnStatisticsTaskRun) 操作来生成列统计数据。

------

# 管理列统计数据生成计划
<a name="manage-column-stats-schedule"></a>

您可以管理 AWS Glue 中的列统计数据生成计划操作，例如更新、启动、停止和删除计划。您可以使用 AWS Glue 控制台、AWS CLI 或 [AWS Glue 列统计 API 操作](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-column-statistics.html)来执行这些任务。

**Topics**
+ [更新列统计数据生成计划](#update-column-stats-shedule)
+ [停止列统计数据生成计划](#stop-column-stats-schedule)
+ [恢复列统计数据生成计划](#resume-column-stats-schedule)
+ [删除列统计数据生成计划](#delete-column-stats-schedule)

## 更新列统计数据生成计划
<a name="update-column-stats-shedule"></a>

创建列统计数据生成任务后，可以通过更新计划来触发该任务。您可以使用 AWS Glue 控制台、AWS CLI 或运行 [UpdateColumnStatisticsTaskSettings](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-column-statistics.html#aws-glue-api-crawler-column-statistics-UpdateColumnStatisticsTaskSettings) 操作来更新表的计划。您可以修改现有计划的参数，例如计划类型（按需或定期）和其他可选参数。

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

**更新列统计数据生成任务的设置**

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

1. 从表列表中选择要更新的表。

1. 在“表详细信息”页面的下半部分中，选择**列统计数据**选项卡。

1. 在**操作**下，选择**编辑**以更新计划。

1. 对计划进行所需的更改，然后选择**保存**。

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

 如果您并非通过控制台使用 AWS Glue 的统计数据生成功能，则可以使用 `update-column-statistics-task-settings` 命令手动更新计划。以下示例演示了如何使用 AWS CLI 更新列统计数据。

```
aws glue update-column-statistics-task-settings \ 
 --database-name 'database_name' \ 
 --table-name 'table_name' \ 
 --role arn:aws:iam::123456789012:role/stats_role \ 
 --schedule 'cron(0 0-5 16 * * ?)' \ 
 --column-name-list 'col-1' \
 --sample-size '20.0' \  
 --catalog-id '123456789012'\
 --security-configuration 'test-security'
```

------

## 停止列统计数据生成计划
<a name="stop-column-stats-schedule"></a>

 如果您不再需要增量统计数据，则可以停止生成计划以节省资源和成本。暂停计划不会影响之前生成的统计数据。您可以随时恢复计划。

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

**停止列统计数据生成任何的计划**

1. 在 AWS Glue 控制台上，选择 Data Catalog 下的**表**。

1. 选择包含列统计数据的表。

1. 在**表详细信息**页面上，选择**列统计数据**。

1. 在**操作**下，依次选择**按计划生成**、**暂停**。

1. 选择**暂停**以进行确认。

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

要使用 AWS CLI 停止列统计任务运行计划，可以使用以下命令：

```
aws glue stop-column-statistics-task-run-schedule \
 --database-name ''database_name' \
 --table-name 'table_name'
```

请将 `database_name` 和 `table_name` 替换为要为其停止列统计任务运行计划的数据库和表的实际名称。

------

## 恢复列统计数据生成计划
<a name="resume-column-stats-schedule"></a>

 如果您之前暂停了统计数据生成计划，则 AWS Glue 允许您随时恢复该计划。您可以使用 AWS Glue 控制台、AWS CLI 或 [StartColumnStatisticsTaskRunSchedule](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-column-statistics.html#aws-glue-api-crawler-column-statistics-StartColumnStatisticsTaskRunSchedule) 操作恢复计划。

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

**恢复列统计数据生成计划**

1. 在 AWS Glue 控制台上，选择 Data Catalog 下的**表**。

1. 选择包含列统计数据的表。

1. 在**表详细信息**页面上，选择**列统计数据**。

1. 在**操作**下，依次选择**按计划生成**、**恢复**。

1. 选择**恢复**以进行确认。

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

请将 `database_name` 和 `table_name` 替换为要为其停止列统计任务运行计划的数据库和表的实际名称。

```
aws glue start-column-statistics-task-run-schedule \
 --database-name 'database_name' \
 --table-name 'table_name'
```

------

## 删除列统计数据生成计划
<a name="delete-column-stats-schedule"></a>

 尽管为了获得最佳查询性能，通常建议保持统计数据为最新，但在某些特定的使用场景中，删除自动生成计划可能较有助益。
+ 如果数据保持相对静态，则现有的列统计数据可在很长一段时间内保持准确性，减少频繁更新的需求。删除计划可以防止不必要的资源消耗，以及与重新生成未更改数据的统计数据相关的开销。
+ 偏好手动控制统计数据生成时。通过删除自动计划，管理员可以有选择地按特定间隔时间或在数据发生重大更改后更新列统计数据，从而确保流程与其维护政策和资源分配需求保持一致。

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

**删除列统计数据生成计划**

1. 在 AWS Glue 控制台上，选择 Data Catalog 下的**表**。

1. 选择包含列统计数据的表。

1. 在**表详细信息**页面上，选择**列统计数据**。

1. 在**操作**下，依次选择**按计划生成**、**删除**。

1. 选择**删除**以进行确认。

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

请将 `database_name` 和 `table_name` 替换为要为其停止列统计任务运行计划的数据库和表的实际名称。

您可以使用 [DeleteColumnStatisticsTaskSettings](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-column-statistics.html#aws-glue-api-crawler-column-statistics-DeleteColumnStatisticsTaskSettings) API 操作或 AWS CLI 来删除列统计数据生成计划。以下示例演示了如何使用 AWS Command Line Interface（AWS CLI）删除列统计数据生成计划。

```
aws glue delete-column-statistics-task-settings \
    --database-name 'database_name' \
    --table-name 'table_name'
```

------