

# AggregateMatch
<a name="dqdl-rule-types-AggregateMatch"></a>

根据给定表达式检查两列聚合的比率。此规则类型适用于多个数据集。对两列聚合进行评估，并通过将第一列聚合的结果除以第二列聚合的结果得出比率。根据提供的表达式检查比率以生成布尔响应。

**语法**

**列聚合**

```
AggregateMatch <AGG_OPERATION> (<OPTIONAL_REFERENCE_ALIAS>.<COL_NAME>)
```
+ **AGG\$1OPERATION** – 用于聚合的操作。目前支持 `sum` 和 `avg`。

  **支持的列类型**：字节、十进制、双精度、浮点数、整数、长整数、短整数
+ **OPTIONAL\$1REFERENCE\$1ALIAS** – 如果列来自引用数据集而不是主数据集，则需要提供此参数。如果您在 Amazon Glue Data Catalog 中使用此规则，则您的引用别名必须遵循 "<database\$1name>.<table\$1name>.<column\$1name>

  **支持的列类型**：字节、十进制、双精度、浮点数、整数、长整数、短整数
+ **COL\$1NAME** – 要聚合列的名称。

  **支持的列类型**：字节、十进制、双精度、浮点数、整数、长整数、短整数

**示例：平均值**

```
"avg(rating)"
```

**示例：总和**

```
"sum(amount)"
```

**示例：引用数据集中各列的平均值**

```
"avg(reference.rating)"
```

**规则**

```
AggregateMatch <AGG_EXP_1> <AGG_EXP_2> <EXPRESSION>
```
+ **AGG\$1EXP\$11** – 第一列聚合。

  支持的列类型：字节、十进制、双精度、浮点数、整数、长整数、短整数

  **支持的列类型**：字节、十进制、双精度、浮点数、整数、长整数、短整数
+ **AGG\$1EXP\$12** – 第二列聚合。

  支持的列类型：字节、十进制、双精度、浮点数、整数、长整数、短整数

  **支持的列类型**：字节、十进制、双精度、浮点数、整数、长整数、短整数
+ **EXPRESSION** — 针对规则类型响应运行以生成布尔值的表达式。有关更多信息，请参阅 [Expressions](dqdl.md#dqdl-syntax-rule-expressions)。

**示例：使用 sum 进行聚合匹配**

以下示例规则检查 `amount` 列中值的总和是否完全等于 `total_amount` 列中值的总和。

```
AggregateMatch "sum(amount)" "sum(total_amount)" = 1.0
```

**示例：使用 average 进行聚合匹配**

以下示例规则检查 `ratings` 列中值的平均值是否等于 `reference` 数据集中 `ratings` 列中值的至少 90% 平均值。在 ETL 或 Data Catalog 体验版中，引用数据集作为附加数据来源提供。

在 Amazon Glue ETL 中，您可以使用：

```
AggregateMatch "avg(ratings)" "avg(reference.ratings)" >= 0.9
```

在 Amazon Glue Data Catalog 中，您可以使用：

```
AggregateMatch "avg(ratings)" "avg(database_name.tablename.ratings)" >= 0.9
```

**零值行为**

 在计算聚合方法（总和/均值）时，`AggregateMatch` 规则将忽略含有零值的行。例如：

```
+---+-----------+
|id |units      |
+---+-----------+
|100|0          | 
|101|null       |
|102|20         |
|103|null       |
|104|40         |
+---+-----------+
```

 列 `units` 的均值将为 (0 \$1 20 \$1 40)/3 = 20。在此计算中不会考虑第 101 行和第 103 行。