

# 自动列统计数据生成
<a name="auto-column-stats-generation"></a>

自动生成列统计数据让您能够安排并自动计算 AWS Glue Data Catalog中新表的统计数据。启用自动统计数据生成后，Data Catalog 会发现具有特定数据格式（如 Parquet、JSON、CSV、XML、ORC、ION 和 Apache Iceberg）的新表及其各自的存储桶路径。通过一次性目录配置，Data Catalog 会为这些表生成统计数据。

 数据湖管理员可以通过在 Lake Formation 控制台中选择默认目录并使用`Optimization configuration`选项启用表统计数据来配置统计数据生成。当您在 Data Catalog 中创建新表或更新现有表时，Data Catalog 会每周收集 Apache Iceberg 表的不同值 (NDV) 数量以及其他统计数据（例如，其他受支持文件格式的空值数、最大值、最小值和平均长度）。

如果您已经在表级别配置了统计数据生成，或者您之前删除了表的统计数据生成设置，则这些特定于表的设置优先于自动列统计数据生成的默认目录设置。

 自动统计数据生成任务会分析表中 50% 的记录来计算统计数据。自动生成列统计数据可确保 Data Catalog 维护每周指标，Amazon Athena 和 Amazon Redshift Spectrum 等查询引擎可以使用这些统计数据来提高查询性能并可能节省成本。它允许使用 AWS Glue API 或控制台安排统计数据生成，从而提供无需人工干预的自动化流程。

**Topics**
+ [启用目录级别自动统计数据生成](enable-auto-column-stats-generation.md)
+ [查看自动表级设置](view-auto-column-stats-settings.md)
+ [禁用目录级别列统计数据生成](disable-auto-column-stats-generation.md)

# 启用目录级别自动统计数据生成
<a name="enable-auto-column-stats-generation"></a>

您可以为 Data Catalog 中所有新的 Apache Iceberg 表和非 OTF 表（Parquet、JSON、CSV、XML、ORC、ION）格式的表启用自动列统计数据生成。创建表后，您还可以手动显式更新列统计数据设置。

 要更新 Data Catalog 设置以启用目录级别，使用的 IAM 角色必须对根目录具有 `glue:UpdateCatalog` 权限或 AWS Lake Formation `ALTER CATALOG` 权限。您可以使用 `GetCatalog` API 来验证目录属性。

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

**在账户级别启用自动列统计数据生成**

1. 通过 [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) 打开 Lake Formation 控制台。

1. 在左侧导航栏上，选择**目录**。

1. 在**目录摘要**页面上，选择**优化配置**下的**编辑**。  
![\[此屏幕截图显示了可用于生成列统计数据的选项。\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/edit-column-stats-auto.png)

1. 在**表优化配置**页面上，选择**启用自动为目录表生成统计数据**选项。  
![\[此屏幕截图显示了可用于生成列统计数据的选项。\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/edit-optimization-option.jpg)

1. 选择一个现有 IAM 角色或创建一个具有运行列统计数据任务所需权限的新角色。

1. 选择**提交**。

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

您也可以通过 AWS CLI 启用目录级别统计数据收集。要使用 AWS CLI 配置表级统计数据收集，请运行下面的命令：

```
aws glue update-catalog --cli-input-json '{
    "name": "123456789012",
    "catalogInput": {
        "description": "Updating root catalog with role arn",
        "catalogProperties": {
            "customProperties": {
                "ColumnStatistics.RoleArn": "arn:aws:iam::"123456789012":role/service-role/AWSGlueServiceRole",
                "ColumnStatistics.Enabled": "true"
            }
        }
    }
}'
```

 上面的命令调用 AWS Glue 的 `UpdateCatalog` 操作，它采用具有以下键值对的 `CatalogProperties` 结构生成目录级别统计数据：
+ ColumnStatistics.RoleArn：用于为生成目录级别统计数据而触发的所有任务的 IAM 角色 ARN
+ ColumnStatistics.Enabled：表示目录级别设置是启用还是禁用的布尔值

------

# 查看自动表级设置
<a name="view-auto-column-stats-settings"></a>

 启用目录级别统计数据收集后，每当通过 AWS 管理控制台、SDK 或 AWS Glue 爬网程序利用 `CreateTable` 或 `UpdateTable` API 创建或更新 Apache Hive 表或 Apache Iceberg 表时，都会为该表创建等效的表级设置。

 启用了自动生成统计数据功能的表必须遵循以下属性之一：
+ 使用以 org.apache.hadoop 开头且 `TableType` 等于 `EXTERNAL_TABLE` 的 `InputSerdeLibrary`
+ 使用以 `com.amazon.ion` 开头且 `TableType` 等于 `EXTERNAL_TABLE` 的 `InputSerdeLibrary`
+ 在其参数结构中包含 table\$1type：“ICEBERG”。

 创建或更新表后，您可以验证表详细信息以确认统计数据生成。`Statistics generation summary`显示 `Schedule` 属性设置为 `AUTO`，而`Statistics configuration`值为`Inherited from catalog`。任何具有以下设置的表设置都将由 Glue 在内部自动触发。

![\[已应用带有目录级别统计数据收集的 Hive 表并且收集了统计数据的图像。\]](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/auto-stats-summary.png)


# 禁用目录级别列统计数据生成
<a name="disable-auto-column-stats-generation"></a>

 您可以使用 AWS Lake Formation 控制台、`glue:UpdateCatalogSettings` API 或 `glue:DeleteColumnStatisticsTaskSettings` API 为新表禁用自动列统计数据生成。

**在账户级别禁用自动列统计数据生成**

1. 通过 [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) 打开 Lake Formation 控制台。

1. 在左侧导航栏上，选择**目录**。

1. 在**目录摘要**页面上，选择**优化配置**下的**编辑**。

1. 在**表优化配置**页面上，取消选中**启用自动为目录表生成统计数据**选项。

1. 选择**提交**。