

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 篩選表達式結構和元素
<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)
```

您可以使用 主控台中的表達式[建置器](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` 檢查項目、動作或使用者的條件。您必須在 `ItemID`、 `ActionID`或 之後使用 `WHERE`元素`UserID`。

**AND/OR**  
若要在相同的篩選條件表達式中將多個條件鏈結在一起，請使用 `AND`或 `OR`。使用 `AND`或 鏈結在一起的條件`OR`只會影響第一個條件中使用的資料集欄位。

**Dataset.field**  
提供資料集和中繼資料欄位，以 `dataset`.`field` 格式篩選建議。例如，若要根據項目資料集中的類型欄位來篩選項目建議，您可以在篩選表達式中使用 Items.genres。

**IF 條件**  
僅使用 `IF`條件**來檢查 的條件`CurrentUser`，並在表達式結尾只檢查*一次*。不過，您可以使用 擴充 `IF`條件`AND`。

**CurrentUser.attribute**  
 若要根據您取得建議的使用者篩選項目建議，請*僅在* IF 條件下使用 `CurrentUser` 並提供使用者欄位。例如 `CurrentUser.AGE`。

**CurrentItem.attribute**  
 對於僅相關的項目配方和使用案例，請使用 `CurrentItem`。`attribute` 根據您在相關項目建議請求中指定的項目屬性來篩選項目。例如 `CurrentItem.GENRE` 或 `CurrentItem.PRICE`。  
 只有當您的網域使用案例或自訂配方產生相關項目建議時，您才可以使用 CurrentItem 元素套用篩選條件，例如類似項目配方或*更相似的 X* 網域使用案例。第一次使用 `CurrentItem`元素建立篩選條件時，可以建立篩選條件幾分鐘。如果您使用 AWS KMS 進行加密，則建立篩選條件最多可能需要 15 分鐘。

**IN/NOT IN**  
使用 `IN`或 `NOT IN`做為比較運算子，根據相符 （或不相符） 一或多個字串值進行篩選。Amazon Personalize 篩選條件僅適用於確切字串。

**比較運算子**  
針對等式，使用 =、＜、<=、＞、>= 和 ！= 運算子來測試數值資料，包括以預留位置參數傳遞的資料。

**星號 (\$1) 字元**  
使用 `*` 來包含或排除所有類型的互動。`*` *僅用於*使用 `Interactions` 資料集 `EVENT_TYPE` 欄位的篩選條件表達式。

**管道分隔符號**  
使用管道分隔符號 (`|`) 將多個表達式鏈結在一起。如需詳細資訊，請參閱[結合多個表達式](multiple-expression-example.md)。

**Parameters**  
對於使用比較運算子或`IN`運算子的表達式，請使用貨幣符號 (\$1) 和參數名稱將預留位置參數新增為值。例如 `$GENRES`。在此範例中，當您取得建議時，您會提供要篩選的類型或類型。  
您可以在將參數名稱新增至表達式時定義參數名稱。參數名稱不需要符合欄位名稱。我們建議您使用類似於欄位名稱且易於記住的參數名稱。當您將篩選條件套用至建議請求時，您可以使用參數名稱 （區分大小寫）。如需示範使用 AWS SDKS 時如何使用預留位置參數套用篩選條件的範例，請參閱 [套用篩選條件 (AWS SDKs)](filter-real-time.md#applying-filter-sdk)。