

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在中以编程方式构建配置文件作业配置 AWS Glue DataBrew
<a name="profile.configuration"></a>

在本节中，您可以找到可以通过编程方式使用的剖析作业步骤和功能的描述。你可以从 AWS Command Line Interface (AWS CLI) 中使用它们，也可以使用其中一个来使用它们 AWS SDKs。

在分析作业中，您可以自定义配置以控制数据集的 DataBrew 评估方式。您可以将该配置应用于数据集或将其应用于特定列。您可以在创建剖析作业时构建配置，然后随时对其进行更新。

剖析配置结构包括四个部分：
+ [ProfileColumns 部分](#profile-columns.statistics)
+ [DatasetStatisticsConfiguration 部分](#profile-dataset-stats-config)
+ [ColumnStatisticsConfigurations 部分](#profile-column-stats-config)
+ [EntityDetectorConfiguration 用于配置 PII 的部分](#entity-detector-configuration)

以下为示例。

```
{
    "ProfileColumns": [
        {
            "Name": "example"
        },
        {
            "Regex": "example.*"
        }
    ],
    "DatasetStatisticsConfiguration": {
        "IncludedStatistics": [
            "CORRELATION"
        ],
        "Overrides": [
            {
                "Statistic": "CORRELATION",
                "Parameters": {
                    "columnSelectors": "[{\"name\":\"example\"}, {\"regex\":\"example.*\"}]"
                }
            }
        ]
    },
    "ColumnStatisticsConfigurations": [
        {
            "Selectors": [
                {
                    "Name": "example"
                }
            ],
            "Statistics": {
                "IncludedStatistics": [
                    "CORRELATION",
                    "DUPLICATE_ROWS_COUNT"
                ],
                "Overrides": [
                    {
                        "Statistic": "VALUE_DISTRIBUTION",
                        "Parameters": {
                            "binNumber": "10"
                        }
                    }
                ]
            }
        }
    ]
}
```

## ProfileColumns 部分
<a name="profile-columns.statistics"></a>

在结构的 `ProfileColumns` 部分，设置要在剖析作业中评估的数据集中的列。`ProfileColumns` 是列选择器（`Selectors`）列表。您可以在列选择器中指定列名称或正则表达式。下面是一个示例。

```
"ProfileColumns": [{"Name": "example"}, {"Regex": "example.*"}]
```

指定 `ProfileColumns` 后，只有名称与 `ProfileColumns` 中的名称或正则表达式匹配的列才会包含在剖析作业中。如果分析作业不支持选定列的数据类型，则在作业运行期间 DataBrew 跳过选定列。

如果 ProfileColumns 未定义，则分析作业将评估所有支持的列。支持的列是包含受支持数据类型的数据的列：`ByteType`、`ShortType`、`IntegerType`、`LongType`、`FloatType`、`DoubleType`、`String` 或 `Boolean`。

## DatasetStatisticsConfiguration 部分
<a name="profile-dataset-stats-config"></a>

在结构的 `DatasetStatisticsConfiguration` 部分，您可以为列间评估构建配置。配置包括 `IncludedStatistics` 和 `Overrides`：下面是一个示例。

```
"DatasetStatisticsConfiguration": {
    "IncludedStatistics": ["CORRELATION"],
    "Overrides": [
        {
            "Statistic": "CORRELATION",
            "Parameters": {
                "columnSelectors": "[{\"name\":\"example\"}, {\"regex\":\"example.*\"}]"
            }
        }
    ]
}
```

您可以通过向 `IncludedStatistics` 中添加评估名称来选择想要的评估。下面是一个示例。

```
"IncludedStatistics": ["CORRELATION", "DUPLICATE_ROWS_COUNT"]
```

指定 `IncludedStatistics` 时，只有列表中的评估才会包含在剖析作业中。如果未定义 `IncludedStatistics`，则剖析作业将使用默认设置运行所有受支持的评估。您可以通过向 `IncludedStatistics` 中添加 NONE 来排除所有评估。下面是一个示例。

```
"IncludedStatistics": ["NONE"]
```

### 数据集级别的可配置统计信息
<a name="statistics.table01"></a>

在结构的 `DatasetStatisticsConfiguration` 部分，剖析作业支持下表所示的评估。


| **统计名称** | **描述** | **支持的数据类型** | **默认状态** | **剖析结果的属性** | **剖析结果的类型** | 
| --- | --- | --- | --- | --- | --- | 
| DUPLICATE\$1ROWS\$1COUNT | 数据集中的重复行计数 | 全部 | Enable | duplicateRowsCount | Int | 
| CORRELATION | 两列之间的 Pearson 相关系数 | 数字 | Enable | correlations（在每个选定列中） | 对象 | 

在 `IncludedStatistics` 中，您可以通过添加覆盖来覆盖每个评估的默认设置。每个覆盖项都包括特定评估的名称和参数映射。

在 `DatasetStatisticsConfiguration` 中，剖析作业支持 `CORRELATION` 覆盖。此覆盖计算选定列列表中两列之间的 Pearson 相关系数。默认设置是选择前 10 个数字列。您可以指定列数或列选择器列表来覆盖默认设置。

`CORRELATION` 采用以下参数：
+ `columnNumber` – 数字列的数量。剖析作业从数据集中选择前 *n* 列。此值应大于 1。使用 `"ALL"` 可选择所有数字列。
+ `columnSelectors:` – 列选择器列表。每个选择器可以包含列名或正则表达式。

下面是一个示例。

```
{
    "Statistic": "CORRELATION",
    "Parameters": {
        "columnSelectors": "[{\"name\":\"example\"}, {\"regex\":\"example.*\"}]"
    }
}
```

## ColumnStatisticsConfigurations 部分
<a name="profile-column-stats-config"></a>

在结构的 `ColumnStatisticsConfigurations` 部分，您可以为特定列构建配置。`ColumnStatisticsConfigurations` 是 `ColumnStatisticsConfiguration` 设置列表。在 `ColumnStatisticsConfiguration` 中，有 `Selectors`（一个列选择器列表）以及用于配置统计信息的 `Statistics`。下面是一个示例。

```
{ 
    "Selectors": [{"Name": "example"}
    ],
    "Statistics": {
       "IncludedStatistics": ["CORRELATION", "DUPLICATE_ROWS_COUNT"]
        "Overrides": [
            {
                "Statistic": "VALUE_DISTRIBUTION",
                "Parameters": {
                    "binNumber": "10"
                }
            }
        ]
    }
}
```

`Selectors` 是列选择器列表。与 `ProfileColumns` 相同，可以在每个列选择器中指定列名或正则表达式。当您指定 `Selectors` 时，列配置将应用于与 `Selectors` 中的任何列选择器匹配的列。否则，配置将应用于所有受支持的列。

在 `Statistics` 中，您可以覆盖选定列的设置。与 `DatasetStatisticsConfiguration` 相同，`Statistics` 具有 `IncludedStatistics` 和 `Overrides`。

要选择所需的评估，请向 `IncludedStatistics` 中添加评估名称。

```
"IncludedStatistics": ["CORRELATION", "DUPLICATE_ROWS_COUNT"]                    
```

指定 `IncludedStatistics` 时，只有列表中的评估才会包含在剖析作业中。否则，剖析作业将使用默认设置运行所有受支持的评估。

您可以通过向 `IncludedStatistics` 中添加 `NONE` 来排除所有评估。

```
"IncludedStatistics": ["NONE"]                    
```

 在某些情况下，在 `ColumnStatisticsConfigurations` 中可能存在多个不同的配置，它们具有不同的 `IncludedStatistics` 可应用于同一列。在这些情况下，剖析作业会选择 `ColumnStatisticsConfigurations` 中的最后一个配置并将其 `IncludedStatistics` 应用于所选列。新配置将覆盖旧配置。

### 列级别的可配置统计信息
<a name="statistics.table02"></a>

在 `ColumnStatisticsConfigurations` 中，剖析作业支持下表所示的评估。

此表中受支持的 `number` 数据类型意味着该属性的数据类型为以下类型之一：`ByteType`、`ShortType`、`IntegerType``LongType`、`FloatType` 或 `DoubleType`。


| **统计名称** | **描述** | **支持的数据类型** | **默认状态** | **剖析结果的属性** | **剖析结果的类型** | 
| --- | --- | --- | --- | --- | --- | 
| – | 列的名称。 | 全部 | – | name | 字符串 | 
| – | 列的数据类型。 | 全部 | – | 类型 | 字符串 | 
| DISTINCT\$1VALUES\$1COUNT | 相异值的数量。*相异值*是指至少出现一次的值。 | number/boolean/string | 已启用 | distinctValuesCount | Int | 
| ENTROPY | 熵（信息论）。 | number/boolean/string | 已启用 | entropy | 双精度 | 
| INTER\$1QUARTILE\$1RANGE | 范围介于数字的 25% 和 75% 之间。 | 数字 | 已启用 | interquartileRange | 双精度 | 
| KURTOSIS | 列的峰度。 | 数字 | 已启用 | 峰度 | 双精度 | 
| MAX | 列中的最大值。 | 数字/字符串长度 | 已启用 | max | Int/Double | 
| MAXIMUM\$1VALUES | 列中的最大值及其计数列表。 | 数字 | 已启用 | maximumValues | 列表 | 
| MEAN | 列中值的平均值。 | 数字/字符串长度 | 已启用 | mean | 双精度 | 
| MEDIAN | 列中值的中值。 | 数字/字符串长度 | 已启用 | median | 双精度 | 
| MEDIAN\$1ABSOLUTE\$1DEVIATION | 每个数据点与数值列中值之间绝对差异的中值。 | 数字 | 已启用 | medianAbsoluteDeviation | 双精度 | 
| MIN | 列中的最小值。 | 数字/字符串长度 | 已启用 | min | Int/Double | 
| MINIMUM\$1VALUES | 列中最小值及其计数列表。 | 数字 | 已启用 | minimumValues | 列表 | 
| MISSING\$1VALUES\$1COUNT | 列中的缺失值数量。Null 和空字符串被视为缺失。 | 全部 | 已启用 | missingValuesCount | Int | 
| MODE | 列中出现频率最高的值。如果经常出现几个值，则模式便是这些值之一。 | 数字/字符串长度 | 已启用 | mode | Int/Double | 
| MOST\$1COMMON\$1VALUES | 列中最常见的值列表。 | number/boolean/string | 已启用 | mostCommonValues | 列表 | 
| OUTLIER\$1DETECTION | 通过 Z\$1score 算法检测列中的异常值。对异常值的数量进行计数，并从检测到的异常值中提取样本列表。 | 数字/字符串长度 | 已启用 | zScoreOutliers计数， zScoreOutliers采样 | Int/List | 
| PERCENTILES | 数字列的百分位数值（5%、25%、75%、95%）。 | 数字 | 已启用 | percentile5、percentile25、percentile75、percentile95 | 双精度 | 
| RANGE | 列中值的范围。 | 数字 | 已启用 | range | Int/Double | 
| SKEWNESS | 列中值的偏斜。 | 数字 | 已启用 | skewness | 双精度 | 
| STANDARD\$1DEVIATION | 列中值的无偏样本标准差。 | 数字/字符串长度 | 已启用 | standardDeviation | 双精度 | 
| SUM | 列中值的总和。 | 数字 | 已启用 | sum | Int/Double | 
| UNIQUE\$1VALUES\$1COUNT | 唯一值的数量。唯一值意味着该值仅出现一次。 | number/boolean/string | 已启用 | uniqueValuesCount | Int | 
| VALUE\$1DISTRIBUTION |  按范围测量列中值的分布。  | 数字/字符串长度 | 已启用 | valueDistribution | 列表 | 
| VARIANCE | 列中值的方差。 | 数字 | 已启用 | variance | 双精度 | 
| Z\$1SCORE\$1DISTRIBUTION | 按范围测量数据点 Z 分数值的分布。 | 数字 | 已启用 | zScoreDistribution | 列表 | 
| ZEROS\$1COUNT | 列中零（0）的数量。 | 数字 | 已启用 | zerosCount | Int | 

在 `IncludedStatistics` 中，您可以通过添加覆盖来覆盖每个评估的默认参数。每个覆盖项都包括特定评估的名称和参数映射。

## ColumnStatisticsConfigurations 列的参数
<a name="profile-column-parameters"></a>

在 `ColumnStatisticsConfigurations` 中，剖析作业支持以下参数。

在某些情况下，在 `ColumnStatisticsConfigurations` 中可能存在多个不同的配置，它们具有不同的 `IncludedStatistics` 可应用于同一列。在这些情况下，剖析作业会选择 `ColumnStatisticsConfigurations` 中的最后一个配置并将其 `IncludedStatistics` 应用于所选列。新配置将覆盖旧配置。

### MAXIMUM\$1VALUES
<a name="profile-column-parameter-MAXIMUM-VALUES"></a>

列出数值列中的最大值及其计数。默认列表大小为 5。您可以通过指定 `sampleSize` 的值覆盖列表大小。

**设置**

`sampleSize`：列表的大小，包括数值列中的最大数字和值计数。此值应大于 0。使用 `"ALL"` 可列出所有值。

**示例**

```
{ 
    "Statistic": "MAXIMUM_VALUES",
    "Parameters": {
        "sampleSize": "5"
    }
}
```

### MINIMUM\$1VALUES
<a name="profile-column-parameter-MINIMUM-VALUES"></a>

列出数值列中的最小值及其计数。默认列表大小为 5。您可以通过指定 `sampleSize` 的值覆盖列表大小。

**设置**

`sampleSize`：列表的大小，包括数值列中的最大数字和值计数。此值应大于 0。使用 `"ALL"` 可列出所有值。

**示例**

```
{
    "Statistic": "MINIMUM_VALUES",
    "Parameters": {
        "sampleSize": "5"
    }
}
```

### MOST\$1COMMON\$1VALUES
<a name="profile-column-parameter-MOST-COMMON-VALUES"></a>

列出列中最常见的值及其计数。默认列表大小为 50。您可以通过指定 `sampleSize` 的值覆盖列表大小。

**设置**

`sampleSize`：列表的大小，包括数值列中的最大数字和值计数。此值应大于 0。使用 `"ALL"` 可列出所有值。

**示例**

```
{
    "Statistic": "MOST_COMMON_VALUES",
    "Parameters": {
        "sampleSize": "50"
    }
}
```

### OUTLIER\$1DETECTION
<a name="profile-column-parameter-OUTLIER-DETECTION"></a>

通过 Z 分数算法检测数值列或字符串列中的异常值（基于字符串长度）。

您的剖析作业会对异常值的数量进行计数，并生成异常值及其 Z 分数的样本列表。该样本列表按 Z 分数的绝对值进行排序。默认列表大小为 50。

当一个值与均值的偏差超过标准差阈值时，Z 分数算法会将其标识为异常值。默认异常值阈值为 3。

您可以再提供一个阈值（即轻度阈值）以获取更多信息。轻度阈值应小于阈值。默认情况下，此功能处于关闭状态。如果指定了轻度阈值，则剖析作业会再返回一个计数，即 `zScoreMildOutliersCount`。此外，`zScoreOutliersSample` 在这种情况下可以包括一个轻度阈值异常值样本。

**设置**
+ `threshold`：要在检测异常值时使用的阈值。此值应大于或等于 0。
+ `mildThreshold`：要检测异常值时使用的轻度阈值。此值应大于或等于 0 并小于 `threshold`。
+ `sampleSize`：列中包含异常值的列表的大小。使用 `"ALL"` 可列出所有值。

**示例**

```
{
    "Statistic": "OUTLIER_DETECTION",
    "Parameters": {
        "threshold": "5",
        "mildThreshold": "3.5",
        "sampleSize": "20"
    }
}
```

### VALUE\$1DISTRIBUTION
<a name="profile-column-parameter-VALUE-DISTRIBUTION"></a>

按值范围测量列中值的分布。剖析作业按数值范围将数值列或字符串列（基于字符串长度）中的值分组到分箱，并生成分箱列表。分箱连续排列，存储桶的上限值是下一个存储桶的下限值。

**设置**

` binNumber`：分箱数量。此值应大于 0。

**示例**

```
{
    "Statistic": "VALUE_DISTRIBUTION",
    "Parameters": {
        "binNumber": "5"
    }
}
```

### Z\$1SCORE\$1DISTRIBUTION
<a name="profile-column-parameter-Z-SCORE-DISTRIBUTION"></a>

测量值的 Z 分数在数值列中的分布。剖析作业按数值范围将值的 Z 分数分组到分箱中，并生成分箱列表。分箱连续排列，存储桶的上限值是下一个存储桶的下限值。

**设置**

` binNumber`：分箱数量。此值应大于 0。

**示例**

```
{
    "Statistic": "Z_SCORE_DISTRIBUTION",
    "Parameters": {
        "binNumber": "5"
    }
}
```

## EntityDetectorConfiguration 用于配置 PII 的部分
<a name="entity-detector-configuration"></a>

在结构`EntityDetectorConfiguration`部分中，您可以将数据集中要 DataBrew 检测为个人识别信息 (PII) 的实体类型配置为**个人资料作业的个人身份信息** (PII)。

### EntityTypes
<a name="w2aac19c15c13c23b5"></a>

您可以将要 DataBrew 检测的实体类型配置为个人资料作业的 PII。未定义 `EntityDetectorConfiguration` 时，禁用实体检测。可以在您的数据集中检测到以下实体类型：
+ USA\$1SSN
+ EMAIL
+ USA\$1ITIN
+ USA\$1PASSPORT\$1NUMBER
+ PHONE\$1NUMBER
+ USA\$1DRIVING\$1LICENSE
+ BANK\$1ACCOUNT
+ CREDIT\$1CARD
+ IP\$1ADDRESS
+ MAC\$1ADDRESS
+ USA\$1DEA\$1NUMBER
+ USA\$1HCPCS\$1CODE
+ USA\$1NATIONAL\$1PROVIDER\$1IDENTIFIER
+ USA\$1NATIONAL\$1DRUG\$1CODE
+ USA\$1HEALTH\$1INSURANCE\$1CLAIM\$1NUMBER
+ USA\$1MEDICARE\$1BENEFICIARY\$1IDENTIFIER
+ USA\$1CPT\$1CODE
+ PERSON\$1NAME
+ DATE

还支持实体类型组 `USA_ALL`，它包括除了 `PERSON_NAME` 和 `DATE` 之外的所有上述实体类型。

`EntityTypes` 的类型是一个字符串数组。

### AllowedStatistics
<a name="w2aac19c15c13c23b7"></a>

配置允许在包含检测到的实体的列上运行的统计信息。如果未定义 `AllowedStatistics`，则不会对包含检测到的实体的列计算统计信息。有关 `AllowedStatistics` 参数的有效值列表，请参阅[列级别的可配置统计信息](#statistics.table02)。

`AllowedStatistics` 的类型是一个 `AllowedStatistics` 对象数组。