

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# フィルター式の構造と要素
<a name="creating-filter-expressions"></a>

このセクションには、フィルター式の構造と要素に関する情報が含まれています。

**Topics**
+ [フィルター式の構造](#filter-expression-structure)
+ [フィルター式の要素](#filter-expression-elements)

## フィルター式の構造
<a name="filter-expression-structure"></a>

フィルター式の一般的な構造は次のとおりです。

```
EXCLUDE/INCLUDE ItemID/ActionID/UserID WHERE dataset type.field IN/NOT IN (value/parameter)
```

手動でフィルター式を作成するか、コンソールの[[Expression builder]](filter-real-time.md#using-filter-expression-builder) (式ビルダー) を使用して式の構文と構造に関するサポートを利用できます。

## フィルター式の要素
<a name="filter-expression-elements"></a>

次の要素を使用して、フィルター式を作成します。

**INCLUDE または EXCLUDE**  
フィルター基準を満たすアイテムのみにレコメンデーションを制限するために `INCLUDE` を使用するか、*または*フィルター基準を満たす、すべてのアイテムを削除するために `EXCLUDE` を使用します。

**ItemID/ActionID/UserID**  
これらの要素のいずれかを `INCLUDE` または `EXCLUDE` 要素の後で使用します。使用する要素は、アイテム (アイテムレコメンデーション)、アクション (アクションレコメンデーション)、またはユーザー (ユーザーセグメント) のどれをフィルタリングするかによって異なります。

**WHERE**  
アイテム、アクション、またはユーザーの条件を確認するには、`WHERE` を使用します。`WHERE` 要素は、`ItemID`、`ActionID`、または `UserID` の後で使用する必要があります。

**AND/OR**  
同じフィルター式内で複数の条件を連鎖させるには、`AND` または `OR` を使用します。`AND` または `OR` を使用して組み合わせられた条件は、最初の条件で使用されたデータセットのフィールドにのみ影響を及ぼすことができます。

**Dataset.field**  
`dataset`.`field` 形式でレコメンデーションをフィルタリングするデータセットとメタデータフィールドを指定します。例えば、Items データセットの genres フィールドに基づいてアイテムレコメンデーションをフィルタリングするには、フィルター式で Items.genres を使用します。

**IF 条件**  
`IF` 条件は、式の最後で 1 回**だけ、`CurrentUser` の条件をチェックするためにのみ**使用してください。ただし、`AND` を使用して `IF` 条件を拡張できます。

**CurrentUser.attribute**  
 レコメンデーションを取得しようとしているユーザーに基づいてアイテムのレコメンデーションをフィルタリングするには、IF 条件で**のみ、`CurrentUser` を使用してユーザーフィールドを指定します。例えば、`CurrentUser.AGE`。

**CurrentItem.attribute**  
 関連アイテムのレシピとユースケースにのみには、`CurrentItem`.`attribute` を使用して、関連商品のレコメンデーションのリクエストで指定した商品の属性に基づいて商品を絞り込むことができます。例えば、`CurrentItem.GENRE`、`CurrentItem.PRICE` です。  
 CurrentItem 要素を使用してフィルターを適用できるのは、Similar-Items レシピや *More Like X* ドメインユースケースなど、ドメインのユースケースまたはカスタムレシピが関連アイテムのレコメンデーションを生成する場合に限られます。`CurrentItem` 要素を含むフィルターを初めて作成する場合、フィルタの作成には数分かかることがあります。暗号化 AWS KMS に を使用する場合、フィルターの作成には最大 15 分かかることがあります。

**IN/NOT IN**  
`IN` または `NOT IN` を比較演算子として使用して、1 つ以上の文字列値の一致 (または不一致) に基づいてフィルタリングします。Amazon Personalize は、正確な文字列に対してのみフィルターを適用します。

**比較演算子**  
=、<、<=、>、>=、\$1= の各演算子を使用して、プレースホルダーパラメータで渡されたデータを含む数値データが等しいかどうかをテストします。

**アスタリスク (\$1) 文字**  
すべてのタイプのインタラクションを含めたり、除外したりするために `*` を使用します。`Interactions` データセットの `EVENT_TYPE` フィールドを使用するフィルター式に*のみ* `*` を使用します。

**パイプ区切り文字**  
パイプ区切り文字 (`|`) を使用して、複数の式を連鎖します。詳細については、「[複数の式の組み合わせ](multiple-expression-example.md)」を参照してください。

**パラメータ**  
比較演算子または `IN` 演算子を使用する式の場合、ドル記号 (\$1) とパラメータ名を使用して、プレースホルダーパラメータを値として追加します。例えば、`$GENRES`。この例では、レコメンデーションを取得する際に、フィルタリングする 1 つまたは複数のジャンルを指定します。  
パラメータ名は、式に追加するときに定義します。パラメータ名はフィールド名と一致する必要はありません。フィールド名に類似し、かつ、覚えやすいパラメータ名を使用することをお勧めします。レコメンデーションリクエストにフィルターを適用するときに、パラメータ名 (大文字と小文字が区別されます) を使用します。 AWS SDKS の使用時にプレースホルダーパラメータを含むフィルターを適用する方法を示す例については、「」を参照してください[フィルターの適用 (AWS SDKs)](filter-real-time.md#applying-filter-sdk)。