

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

# 筛选批量建议和用户细分（自定义资源）
<a name="filter-batch"></a>

筛选批量建议和用户细分的工作方式与筛选实时建议几乎相同。它遵循[获取批量物品推荐](getting-batch-recommendations.md)和[获取批量用户细分](getting-user-segments.md)中描述的相同工作流程。要筛选批量建议或用户细分，请执行以下操作：

1.  创建筛选器，就像针对实时建议创建筛选器一样。有关更多信息，请参阅 [筛选实时建议](filter-real-time.md)。

1. 准备您的输入数据并将其上传到 Amazon S3，如[为批量建议准备输入数据](batch-data-upload.md)或[为用户细分准备输入数据](prepare-input-data-user-segment.md)中所述。如果您的筛选器使用占位符参数，则必须添加其他 `filterValues` 对象。有关更多信息，请参阅 [在您的输入 JSON 中提供筛选器值](#providing-filter-values)。如果您的筛选器不使用占位符参数，则您的输入数据可以遵循[批量推理作业输入和输出 JSON 示例](batch-data-upload.md#batch-inference-job-json-examples) [批量细分作业输入和输出 JSON 示例](prepare-input-data-user-segment.md#batch-segment-job-json-examples)中的示例 

1.  为输出数据创建一个单独的位置，可以是文件夹，也可以是其他 Amazon S3 存储桶。

1.  创建[批量推理作业](creating-batch-inference-job.md)或[批量细分作业](creating-batch-seg-job.md)。创建作业时，指定筛选器的 Amazon 资源名称 (ARN)。

1.  批量推理或批量细分作业完成后，从 Amazon S3 的输出位置检索建议或用户细分。

**Topics**
+ [在您的输入 JSON 中提供筛选器值](#providing-filter-values)
+ [筛选批量工作流程（控制台）](#filter-batch-recommendations-console)
+ [筛选批处理工作流程 (AWS SDKs)](#filter-batch-recommendations-sdk)

## 在您的输入 JSON 中提供筛选器值
<a name="providing-filter-values"></a>

对于带有占位符参数的筛选器（如 `$GENRE`），您必须在输入 JSON 的 `filterValues` 对象中提供参数的值。对于 `filterValues` 对象，每个键都是一个参数名称。每个值都是您作为参数传递的标准。用转义引号将每个值括起来：`"filterValues":{"GENRES":"\"drama\""}`。对于多个值，用英文逗号分隔每个值：`"filterValues":{"GENRES":"\"horror\",\"comedy\",\"drama\""}`

**批量推理作业输入 JSON 示例**

以下是*批量推理作业* 的 JSON 输入文件前几行的示例。该示例包括 `filterValues` 对象。`GENRES` 键对应于筛选器表达式中的 `$GENRES` 占位符。此示例中的作业使用 User-Personalization 食谱。对于 RELATED\$1ITEMS 食谱，提供 itemId，而不是 userId。对于 PERSONALIZED\$1RANKING 食谱，提供 userID 和 itemList。

```
{"userId": "5","filterValues":{"GENRES":"\"horror\",\"comedy\",\"drama\""}}
{"userId": "3","filterValues":{"GENRES":"\"horror\",\"comedy\""}}
{"userId": "34","filterValues":{"GENRES":"\"drama\""}}
```

有关按食谱进行批量推理作业输入数据的更多示例，请参阅[批量推理作业输入和输出 JSON 示例](batch-data-upload.md#batch-inference-job-json-examples)。您可以使用这些示例作为起点并添加上面示例中的 `filterValues` 对象。

**批量细分作业输入 JSON 示例**

以下是*批量细分作业* 的 JSON 输入文件（带筛选器值）前几行的示例。`GENRES` 键对应于筛选器表达式中的 `$GENRES` 占位符。

```
{"itemAttributes": "ITEMS.genres = \"Comedy\" AND ITEMS.genres = \"Action\"","filterValues":{"COUNTRY":"\"Japan\""}}
{"itemAttributes": "ITEMS.genres = \"Horror\"","filterValues":{"COUNTRY":"\"United States\"\""}}
{"itemAttributes": "ITEMS.genres = \"Action\" AND ITEMS.genres = \"Adventure\"","filterValues":{"COUNTRY":"\"England\""}}
```

有关按食谱进行批量推理作业输入数据的更多示例，请参阅[批量细分作业输入和输出 JSON 示例](prepare-input-data-user-segment.md#batch-segment-job-json-examples)。您可以使用这些示例作为起点并添加上面示例中的 `filterValues` 对象。

## 筛选批量工作流程（控制台）
<a name="filter-batch-recommendations-console"></a>

要使用 Amazon Personalize 控制台筛选批量工作流程，您需创建筛选器，然后创建批量推理作业或批量细分作业，并选择筛选器。有关完整的分步说明，请参阅[创建批量推理作业（控制台）](creating-batch-inference-job.md#batch-console)和[创建批量细分作业（控制台）](creating-batch-seg-job.md#batch-segment-console)。

## 筛选批处理工作流程 (AWS SDKs)
<a name="filter-batch-recommendations-sdk"></a>

要使用筛选批量建议 AWS SDKs，请创建一个筛选条件并在[CreateBatchInferenceJob](API_CreateBatchInferenceJob.md)或[CreateBatchSegmentJob](API_CreateBatchSegmentJob.md)请求中包含`FilterArn`参数。

 以下代码展示了如何使用 适用于 Python (Boto3) 的 AWS SDK创建带筛选器的批量推理作业。我们建议使用不同的输出数据位置（文件夹或其他 Amazon S3 存储桶）。有关所有字段的完整说明，请参阅[创建批量推理作业 (AWS SDKs)](creating-batch-inference-job.md#batch-sdk)。

```
import boto3
     
personalize = boto3.client("personalize")
 
personalize_rec.create_batch_inference_job (
    solutionVersionArn = "Solution version ARN",
    jobName = "Batch job name",
    roleArn = "IAM role ARN",
    filterArn = "Filter ARN",
    jobInput = 
        {"s3DataSource": {"path": "S3 input path"}},
    jobOutput =
        {"S3DataDestination": {"path": "S3 output path"}}
)
```