

# 在可视化作业中使用 FindMatches
<a name="find-matches-visual-job"></a>

 要在 AWS Glue Studio 中使用 **FindMatches** 转换，您可以使用调用 FindMatches API 的**自定义转换**节点。有关如何使用自定义转换的更多信息，请参阅 [Creating a custom transformation](https://docs.aws.amazon.com/glue/latest/ug/transforms-custom.html) 

**注意**  
 目前，FindMatches API 仅适用于 `Glue 2.0`。要使用调用 FindMatches API 的自定义转换运行作业，请确保**任务详细信息**选项卡中的 AWS Glue 版本为 `Glue 2.0`。如果 AWS Glue 的版本不是 `Glue 2.0`，则作业将在运行时失败，并显示以下错误消息：“无法从 'awsglueml.transforms' 导入名称 'FindMatches'”。

## 先决条件
<a name="adding-find-matches-to-a-visual-job-prerequisites"></a>
+  要使用 **FindMatches** 转换，请打开 AWS Glue Studio 控制台，网址为 [https://console.aws.amazon.com/gluestudio/](https://console.aws.amazon.com/gluestudio/)。
+  创建机器学习转换。创建后，会生成一个转换 ID。在执行以下步骤时，您将需要此 ID。有关如何创建机器学习转换的更多信息，请参阅 [Adding and editing machine learning transforms](https://docs.aws.amazon.com/glue/latest/dg/console-machine-learning-transforms.html#console-machine-learning-transforms-actions)。

## 添加 FindMatches 转换
<a name="adding-find-matches-to-a-visual-job"></a>

**要添加 FindMatches 转换，请执行以下操作：**

1.  在 AWS Glue Studio 作业编辑器中，通过单击可视作业图表左上角的十字符号打开“资源”面板，然后通过选择**数据选项卡**来选择数据来源。这是您要检查匹配项的数据来源。  
![屏幕截图显示了一个圆圈，内有十字符号。当您在可视化作业编辑器中单击此按钮时，资源面板将打开。](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/resource-panel-blank-canvas.png)

1.  选择数据来源节点，然后通过单击可视化作业图左上角的十字符号打开“资源”面板，然后搜索“自定义转换”。选择**自定义转换**节点将其添加到图表中。**自定义转换**链接到数据来源节点。如果不是，则可以单击**自定义转换**节点并选择**节点属性**选项卡，然后在**父节点**下选择数据来源。

1.  在可视化图中单击**自定义转换**节点，然后选择**节点属性**选项卡并命名自定义转换。建议您重命名转换，以便在可视化图中可以轻松识别转换名称。

1.  选择**转换**选项卡，可以在其中编辑代码块。在这里，可以添加调用 FindMatches API 的代码。  
![屏幕截图显示了选择“自定义转换”节点后，“转换”选项卡中的代码块。](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/custom-transform-code-block.png)

    代码块包含预先填充的代码，可帮助您入门。使用以下模板覆盖预先填充的代码。该模板有一个用于**转换 ID** 的占位符，您可以提供值。

   ```
   def MyTransform (glueContext, dfc) -> DynamicFrameCollection:
       dynf = dfc.select(list(dfc.keys())[0])
       from awsglueml.transforms import FindMatches
       findmatches = FindMatches.apply(frame = dynf, transformId = "<your id>")
       return(DynamicFrameCollection({"FindMatches": findmatches}, glueContext))
   ```

1.  单击可视化图中的**自定义转换**节点，然后通过单击可视化作业图左上角的十字符号打开“资源”面板，然后搜索“从集合中选择”。由于集合中只有一个 DynamicFrame，因此无需更改默认选择。

1.  您可以继续添加转换或存储结果，现在，查找匹配的其他列丰富了结果。如果要在下游转换中引用这些新列，则需要将它们添加到转换输出架构中。最简单的方法是选择**数据预览**选项卡，然后在“架构”选项卡中选择“使用 datapreview 架构”。

1.  要自定义 FindMatches，您可以添加其他参数以传递给“apply”方法。请参阅 [FindMatches class](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-pyspark-transforms-findmatches.html)。

## 以增量方式添加 FindMatches 转换
<a name="find-matches-incrementally-visual-job"></a>

 对于增量匹配，其过程与**添加 FindMatches 转换**相同，但有以下区别：
+  您需要两个父节点，而不是自定义转换的父节点。
+  第一个父节点应该是数据集。
+  第二个父节点应该是增量数据集。

   将模板代码块中的 `transformId` 替换为您的 `transformId`：

  ```
  def MyTransform (glueContext, dfc) -> DynamicFrameCollection:
      dfs = list(dfc.values())
      dynf = dfs[0]
      inc_dynf = dfs[1]
      from awsglueml.transforms import FindIncrementalMatches
      findmatches = FindIncrementalMatches.apply(existingFrame = dynf, incrementalFrame = inc_dynf,
                                      transformId = "<your id>")
      return(DynamicFrameCollection({"FindMatches": findmatches}, glueContext))
  ```
+  有关可选参数，请参阅 [FindIncrementalMatches class](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-pyspark-transforms-findincrementalmatches.html)。