

# DatasetMatch


 检查主数据集中的数据是否与引用数据集中的数据匹配。使用提供的键列映射将两个数据集联接起来。如果您只想检查这些列中的数据是否相等，则可以提供其他列映射。请注意，要让 **DataSetMatch** 起作用，您的联接键应该是唯一的，并且不应为 NULL（必须是主键）。如果您不满足这些条件，则会收到错误消息：“提供的键映射不适合给定的数据帧”。如果您无法使用唯一的交集键，请考虑使用其他规则类型（例如 **AggregateMatch**）来匹配摘要数据。

**语法**

```
DatasetMatch <REFERENCE_DATASET_ALIAS> <JOIN CONDITION WITH MAPPING> <OPTIONAL_MATCH_COLUMN_MAPPINGS> <EXPRESSION>
```
+ **REFERENCE\$1DATASET\$1ALIAS** – 用于比较主数据集数据的引用数据集的别名。
+ **KEY\$1COLUMN\$1MAPPINGS** – 以逗号分隔的列名列表，这些列名构成了数据集中的键。如果两个数据集中的列名不相同，则必须使用 `->` 分隔它们
+ **OPTIONAL\$1MATCH\$1COLUMN\$1MAPPINGS** – 如果您只想检查某些列中的匹配数据，则可以提供此参数。它使用与键列映射相同的语法。如果未提供此参数，我们将匹配所有剩余列中的数据。其余的非键列在两个数据集中必须具有相同的名称。
+ **EXPRESSION** — 针对规则类型响应运行以生成布尔值的表达式。有关更多信息，请参阅 [Expressions](dqdl.md#dqdl-syntax-rule-expressions)。

**示例：使用 ID 列匹配集合数据集**

以下示例规则使用“ID”列来检查主数据集中是否有超过 90% 与引用数据集相匹配。在本例中，它会比较所有列。

```
DatasetMatch "reference" "ID" >= 0.9
```

**示例：使用多个键列匹配集合数据集**

在以下示例中，主数据集和引用数据集的键列名称不同。`ID_1` 和 `ID_2` 共同构成主数据集中的复合键。`ID_ref1` 和 `ID_ref2` 共同构成引用数据集中的复合键。在这种情况下，您可以使用特殊语法来提供列名。

```
DatasetMatch "reference" "ID_1->ID_ref1,ID_2->ID_ref2" >= 0.9
```

**示例：使用多个键列匹配集合数据集并检查特定列是否匹配**

此示例建立在前一个示例的基础上。我们要检查是否只有包含金额的列匹配。此列在主数据集中名为 `Amount1`，在引用数据集中名为 `Amount2`。您希望完全匹配。

```
DatasetMatch "reference" "ID_1->ID_ref1,ID_2->ID_ref2" "Amount1->Amount2" >= 0.9
```