

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Filtrado de recomendaciones en tiempo real
<a name="filter-real-time"></a>

Puede filtrar las recomendaciones en tiempo real con la consola Amazon Personalize, AWS Command Line Interface (AWS CLI) o la AWS SDKs.

 Al obtener recomendaciones de elementos personalizadas o de elementos similares, puede especificar una promoción en la solicitud. Una *promoción* usa un filtro para definir reglas empresariales adicionales que se aplican a un subconjunto configurable de elementos recomendados. Para obtener más información, consulte [Promoción de elementos en las recomendaciones en tiempo real](promoting-items.md). 

**Topics**
+ [Filtrado de recomendaciones en tiempo real (consola)](#filter-rt-console)
+ [Filtrado de recomendaciones en tiempo real (AWS CLI)](#filter-rt-cli)
+ [Filtrado de recomendaciones en tiempo real (AWS SDKs)](#filter-rt-sdk)

## Filtrado de recomendaciones en tiempo real (consola)
<a name="filter-rt-console"></a>

Para filtrar recomendaciones en tiempo real, cree un filtro y, a continuación, aplíquelo a una solicitud de recomendación. 

**nota**  
Para filtrar recomendaciones mediante un filtro con parámetros y una campaña implementada antes del 10 de noviembre de 2020, debe volver a implementar la campaña mediante la operación [UpdateCampaign](API_UpdateCampaign.md) o crear una nueva campaña.

### Creación de un filtro (consola)
<a name="creating-filter-console"></a>

 Para crear un filtro en la consola, elige el grupo de conjuntos de datos que contiene la campaña o el generador de recomendaciones que desea usar para obtener recomendaciones filtradas. A continuación, proporcione un nombre de filtro y una expresión de filtro.

**Para crear un filtro (consola)**

1. Abre la consola Amazon Personalize en [https://console.aws.amazon.com/personalize/casa](https://console.aws.amazon.com/personalize/home) e inicia sesión en tu cuenta. 

1. Elija el grupo de conjuntos de datos que contiene la campaña o el generador de recomendaciones que desee usar para obtener recomendaciones filtradas.

1. En la página de navegación, elija **Filtros** y, a continuación, **Crear filtro**. Aparece la página **Crear filtro**.  
![\[Representa la página de creación de filtros con los campos de nombre y expresión del filtro.\]](http://docs.aws.amazon.com/es_es/personalize/latest/dg/images/create-filter-page.png)

1. Para **Nombre del filtro**, introduzca un nombre para el filtro. Elegirá el filtro con este nombre cuando lo aplique a una solicitud de recomendación.

1. En **Expresión**, elija **Crear expresión** o **Añadir expresión manualmente**, y cree o inserte la expresión:
   + Para usar el generador de expresiones, elija **Crear expresión**. El generador de expresiones proporciona la estructura, los campos y las directrices para crear expresiones de filtro con el formato correcto. Para obtener más información, consulte [Uso del generador de expresiones de filtro](#using-filter-expression-builder).
   +  Para introducir su propia expresión, elija **Añadir expresión manualmente**. Para obtener más información, consulte [Filtrar elementos de expresión](creating-filter-expressions.md#filter-expression-elements). 

1. Seleccione **Finalizar**. La página de información general del filtro muestra el nombre de recurso de Amazon (ARN), el estado y la expresión completa del filtro. Para eliminar el filtro, elija **Eliminar**. Para obtener información acerca de la búsqueda y eliminación de filtros después de haber salido de la página de información general, consulte [Eliminación de un filtro (consola)](#delete-filter-console).  
![\[Representa la página de detalles de filtro con el ARN y la expresión del filtro.\]](http://docs.aws.amazon.com/es_es/personalize/latest/dg/images/filter-details-page.png)

### Aplicación de un filtro (consola)
<a name="apply-filter-console"></a>

 Para aplicar un filtro, en **Probar recomendador** (para recomendadores) o **Probar resultados de la campaña** (para campañas personalizadas), elija el filtro y escriba los valores de los parámetros de filtro. A continuación, obtenga recomendaciones para un usuario. 

**importante**  
En el caso de las expresiones de filtro que utilizan un elemento `INCLUDE`, debe proporcionar valores para todos los parámetros definidos en la expresión. En el caso de los filtros con expresiones que utilizan un elemento `EXCLUDE`, puede omitir `filter-values`. En este caso, Amazon Personalize no utiliza esa parte de la expresión para filtrar recomendaciones.

**Para aplicar un filtro (consola)**

1. Abre la consola Amazon Personalize en [https://console.aws.amazon.com/personalize/casa](https://console.aws.amazon.com/personalize/home) e inicia sesión en tu cuenta. 

1. Elija el grupo de conjuntos de datos que contiene la campaña o el generador de recomendaciones que desee usar para obtener recomendaciones filtradas.

1. En función del tipo de grupo de conjunto de datos o el tipo de recurso, puede seguir uno de los procedimientos a continuación:

   1. Para un grupo de conjuntos de datos de dominio, en el panel de navegación, elija **Generadores de recomendaciones**.

   1. Para un grupo de conjuntos de datos personalizados o recursos personalizados, en el panel de navegación, elija **Recursos personalizados** y, a continuación, **Campañas**.

1. En la página **Generadores de recomendaciones** o **Campañas**, elija el generador de recomendaciones o la campaña objetivo.

1. Para comparar, comience por obtener recomendaciones sin aplicar un filtro. En **Probar recomendador**/**Probar resultados de la campaña**, introduzca el ID de un usuario para el que quiera recibir recomendaciones, o el ID del elemento para obtener elementos relacionados, y elija **Obtener recomendaciones**. Aparece una tabla que contiene las recomendaciones principales.  
![\[Representa los resultados de recomendaciones sin aplicar un filtro.\]](http://docs.aws.amazon.com/es_es/personalize/latest/dg/images/Recommendations_no-filter.PNG)

1. En **Nombre del filtro**, elija el filtro que ha creado. Si el filtro tiene parámetros de marcador de posición, aparecen los campos asociados para cada parámetro.

1. Si utiliza un filtro con parámetros de marcador de posición, introduzca el valor para establecer los criterios de filtro. Para usar varios valores para un parámetro, separe cada valor con una coma.

1. Con el mismo `User ID` o `Item ID` que en el paso anterior, elija **Obtener recomendaciones**. Aparece la tabla de recomendaciones.  
![\[Representa los resultados de recomendaciones con un filtro aplicado.\]](http://docs.aws.amazon.com/es_es/personalize/latest/dg/images/Recommendations_filter.png)

   Por ejemplo, si el usuario ya ha comprado un producto recomendado, el filtro lo quita de la lista de recomendaciones. En este ejemplo, los elementos 2657 y 2985 se sustituyeron por los elementos más adecuados que el usuario no compró (los elementos 2641 y 1573).

### Uso del generador de expresiones de filtro
<a name="using-filter-expression-builder"></a>

El **Generador de expresiones** de la página **Crear filtro** proporciona la estructura, los campos y las directrices para crear un filtro con el formato correcto.

![\[Representa los campos del generador de expresiones en la página de creación de filtros.\]](http://docs.aws.amazon.com/es_es/personalize/latest/dg/images/expression-builder-empty.png)


Para crear una expresión de filtro:
+ Utilice los campos **Tipo**, **Acción**, **Propiedad**, **Operador** y **Valor** para crear una expresión. 

  Para el **Valor**, introduzca un valor fijo o, para establecer los criterios de filtro cuando reciba recomendaciones, introduzca *\$1* \$1 un nombre de parámetro. Por ejemplo, `$GENRES`. Cuando reciba recomendaciones, proporcionará el valor o valores por los que filtrar. En este ejemplo, proporcionaría un género o una lista de géneros al recibir recomendaciones.

  Separe los valores que no sean parámetros con una coma. No puede añadir parámetros separados por comas a un filtro.
**nota**  
Tras elegir una **Propiedad** (en formato `dataset.field`), el valor de la **Propiedad** de las filas sucesivas encadenadas por las condiciones `AND` o `OR` debe ser el mismo `dataset`.
+  Utilice los botones **\$1** y **X** para añadir o eliminar una fila de la expresión. No se puede eliminar la primera fila. 
+  Para las filas nuevas, utilice los operadores `AND`, `IF` o `OR` o del menú **AND** para crear una cadena de condiciones. 

  Para las condiciones `IF`:
  + Cada expresión solo puede contener un elemento `IF`. Si elimina una condición IF, el Generador de expresiones elimina cualquier condición `AND` posterior a la misma.
  + Solo puede usar las condiciones `IF` para las expresiones que filtran por el `CurrentUser`.
+  Elija el botón **Agregar expresión** para agregar una expresión de filtro adicional para un filtrado más preciso. Cada expresión se evalúa primero de forma independiente y el resultado es una unión de los dos resultados. 
**nota**  
Para crear un filtro que utilice conjuntos de datos tanto de elementos como de interacciones de elementos, o bien conjuntos de datos de acciones y de interacciones de acción, *debe* utilizar varias expresiones.

#### Ejemplo de generador de expresiones
<a name="expression-builder-example"></a>

En el siguiente ejemplo, se muestra cómo crear un filtro que excluya los elementos de un género que especifique al recibir recomendaciones (observe el parámetro de marcador de posición \$1GENRES). El filtro también excluye los elementos con un valor de `DOWNLOAD_COUNT` superior a `200`, pero solo si la edad del usuario actual es superior a `17`.

![\[Muestra cómo utilizar el generador de expresiones para crear una expresión de filtro de ejemplo.\]](http://docs.aws.amazon.com/es_es/personalize/latest/dg/images/create-filter-expression-builder.png)


### Eliminación de un filtro (consola)
<a name="delete-filter-console"></a>

Al eliminar un filtro, se elimina el filtro de la lista de filtros de un grupo de conjuntos de datos.

**importante**  
No puede eliminar un filtro mientras se está realizando un trabajo de inferencia por lotes.

**Para eliminar un filtro (consola)**

1. Abre la consola Amazon Personalize en [https://console.aws.amazon.com/personalize/casa](https://console.aws.amazon.com/personalize/home) e inicia sesión en tu cuenta. 

1. En la lista de **Grupos de conjuntos de datos**, elija el grupo de conjuntos de datos que contiene el filtro que desea eliminar. 

1. En el panel de navegación, elija **Filtros**.

1. En la lista de filtros, elige el filtro que desea eliminar y **Ver detalles**. Se abrirá la página de detalles del filtro.

1. Elija **Eliminar** y confirme la eliminación en el cuadro de diálogo de confirmación. 

## Filtrado de recomendaciones en tiempo real (AWS CLI)
<a name="filter-rt-cli"></a>

Para filtrar las recomendaciones mediante el AWS CLI, debe crear un filtro y, a continuación, aplicarlo especificando el ARN del filtro en una solicitud [GetRecommendations](API_RS_GetRecommendations.md) o[GetPersonalizedRanking](API_RS_GetPersonalizedRanking.md).

**importante**  
Para filtrar recomendaciones mediante un filtro con parámetros y una campaña que haya implementado antes del 10 de noviembre de 2020, debe volver a implementar la campaña mediante la llamada a [UpdateCampaign](API_UpdateCampaign.md) o crear una nueva campaña.

### Creación de un filtro (AWS CLI)
<a name="creating-filter-cli"></a>

Utilice la siguiente operación `create-filter` para crear un filtro y especificar la expresión de filtro. 

Sustituya el `Filter name` por el nombre del filtro y el `Dataset group ARN` por el nombre de recurso de Amazon (ARN) del grupo de conjunto de datos. Sustituya el `filter-expression` de ejemplo por su propia expresión de filtro. 

```
aws personalize create-filter \
  --name Filter name \
  --dataset-group-arn dataset group arn \
  --filter-expression "EXCLUDE ItemID WHERE Items.CATEGORY IN (\"$CATEGORY\")"
```

 Si se realiza correctamente, aparecerá el ARN de filtro. Regístrelo para su uso posterior. Para comprobar que el filtro está activo, utilice la operación [DescribeFilter](API_DescribeFilter.md) antes de utilizar el filtro. 

 Para obtener más información sobre la API, consulte [CreateFilter](API_CreateFilter.md). Para obtener más información sobre las expresiones de filtro, incluidos ejemplos, consulte [Estructura y elementos de las expresiones de filtro](creating-filter-expressions.md). 

### Aplicación de un filtro (AWS CLI)
<a name="applying-filter-cli"></a>

Cuando utilice las operaciones `get-recommendations`, `get-action-recommendations` o `get-personalized-ranking`, aplique un filtro al pasar el valor `filter-arn` y cualquier valor de filtro como parámetro. 

A continuación se muestra un ejemplo de la operación `get-recommendations`. Sustituya `Campaign ARN` por el nombre de recurso de Amazon (ARN) de su campaña `User ID` por el ID del usuario para el que recibes recomendaciones, y `Filter ARN` por el ARN de su filtro. Si recibe recomendaciones de un generador de recomendaciones en lugar de una campaña, utilice `recommender-arn` en lugar de `--campaign-arn` y proporcione el ARN del generador de recomendaciones.

Si su expresión tiene algún parámetro, incluya el objeto `filter-values`. Para cada parámetro de su expresión de filtro, proporcione el nombre del parámetro (distingue entre mayúsculas y minúsculas) y los valores. Por ejemplo, si la expresión de filtro tiene un parámetro `$GENRE`, escriba *“GENRE”* como la clave, y uno o varios géneros, por ejemplo, `"Comedy"`, como el valor. Separe los valores con comas. Por ejemplo, `"\"comedy\",\"drama\",\"horror"\"`. 

**importante**  
En el caso de las expresiones de filtro que utilizan un elemento `INCLUDE` para incluir elementos, debe proporcionar valores para todos los parámetros definidos en la expresión. En el caso de los filtros con expresiones que utilizan un elemento `EXCLUDE` para excluir elementos, puede omitir `filter-values`. En este caso, Amazon Personalize no utiliza esa parte de la expresión para filtrar recomendaciones.

```
aws personalize-runtime get-recommendations \
  --campaign-arn Campaign ARN \
  --user-id User ID \
  --filter-arn Filter ARN \
  --filter-values '{
      "Parameter name": "\"value\"",
      "Parameter name": "\"value1\",\"value2\",\"value3\""
    }'
```

### Eliminación de un filtro (AWS CLI)
<a name="delete-filter-cli"></a>

 Utilice la siguiente operación `delete-filter` para eliminar un filtro. Sustituya `filter ARN` por el ARN del filtro. 

```
aws personalize delete-filter --filter-arn Filter ARN
```

## Filtrado de recomendaciones en tiempo real (AWS SDKs)
<a name="filter-rt-sdk"></a>

Para filtrar las recomendaciones mediante el AWS SDKs, debe crear un filtro y, a continuación, aplicarlo especificando el ARN del filtro en una solicitud [GetRecommendations](API_RS_GetRecommendations.md) o[GetPersonalizedRanking](API_RS_GetPersonalizedRanking.md).

**importante**  
Para filtrar recomendaciones mediante un filtro con parámetros y una campaña que haya implementado antes del 10 de noviembre de 2020, debe volver a implementar la campaña mediante la llamada a [UpdateCampaign](API_UpdateCampaign.md) o crear una nueva campaña.

### Creación de un filtro (AWS SDKs)
<a name="creating-filter-sdk"></a>

 Cree un filtro nuevo con la operación [CreateFilter](API_CreateFilter.md). El código siguiente muestra cómo crear un filtro. Especifique el nombre de filtro, el nombre de recurso de Amazon (ARN) de su grupo de conjunto de datos, y proporcione la expresión de filtro. 

------
#### [ SDK for Python (Boto3) ]

```
import boto3
 
personalize = boto3.client('personalize')
 
response = personalize.create_filter(
    name = 'Filter Name',
    datasetGroupArn = 'Dataset Group ARN',
    filterExpression = 'EXCLUDE ItemID WHERE Items.CATEGORY IN ($CATEGORY)'
) 
filter_arn = response["filterArn"]
print("Filter ARN: " + filter_arn)
```

------
#### [ SDK for Java 2.x ]

```
public static String createFilter(PersonalizeClient personalizeClient,
                                 String filterName,
                                 String datasetGroupArn,
                                 String filterExpression) {
    try {
        CreateFilterRequest request = CreateFilterRequest.builder()
                .name(filterName)
                .datasetGroupArn(datasetGroupArn)
                .filterExpression(filterExpression)
                .build();

        return personalizeClient.createFilter(request).filterArn();
    }
    catch(PersonalizeException e) {
        System.err.println(e.awsErrorDetails().errorMessage());
        System.exit(1);
    }
    return "";
}
```

------
#### [ SDK for JavaScript v3 ]

```
// Get service clients module and commands using ES6 syntax.
import { CreateFilterCommand } from "@aws-sdk/client-personalize";
import { personalizeClient } from "./libs/personalizeClients.js";
// Or, create the client here.
// const personalizeClient = new PersonalizeClient({ region: "REGION"});

// Set the filter's parameters.
export const createFilterParam = {
  datasetGroupArn: "DATASET_GROUP_ARN" /* required */,
  name: "NAME" /* required */,
  filterExpression: "FILTER_EXPRESSION" /*required */,
};

export const run = async () => {
  try {
    const response = await personalizeClient.send(
      new CreateFilterCommand(createFilterParam),
    );
    console.log("Success", response);
    return response; // For unit tests.
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

------

Registre el ARN del filtro para su uso posterior. Para comprobar que el filtro está activo, utilice la operación [DescribeFilter](API_DescribeFilter.md) antes de utilizar el filtro. Para obtener más información sobre la API, consulte [CreateFilter](API_CreateFilter.md). Para obtener más información sobre las expresiones de filtro, incluidos ejemplos, consulte [Estructura y elementos de las expresiones de filtro](creating-filter-expressions.md).

### Aplicación de un filtro (AWS SDKs)
<a name="applying-filter-sdk"></a>

Cuando utilice las GetPersonalizedRanking operaciones GetRecommendations, GetActionRecommendations, o, aplique un filtro pasando a `filterArn` y cualquier valor del filtro como parámetros.

El siguiente código muestra cómo obtener recomendaciones de elementos de Amazon Personalize filtradas para un usuario. Especifique el ID del usuario para el que desea obtener recomendaciones, el nombre de recurso de Amazon (ARN) de la campaña y el ARN de su filtro. Si recibe recomendaciones de un generador de recomendaciones en lugar de una campaña, utilice `recommenderArn` en lugar de `campaignArn` y proporcione el ARN del generador de recomendaciones. 

Para `filterValues`, para cada parámetro opcional de la expresión de filtro, proporcione el nombre del parámetro (distingue entre mayúsculas y minúsculas) y el valor o los valores. Por ejemplo, si la expresión de filtro tiene un parámetro `$GENRES`, indique *"GENRES"* como la clave y uno o varios géneros, como `"\"Comedy"\"`, como valor. Para varios valores, separe cada valor con una coma. Por ejemplo, `"\"comedy\",\"drama\",\"horror\""`. 

**importante**  
En el caso de las expresiones de filtro que utilizan un elemento `INCLUDE` para incluir elementos, debe proporcionar valores para todos los parámetros definidos en la expresión. En el caso de los filtros con expresiones que utilizan un elemento `EXCLUDE` para excluir elementos, puede omitir `filter-values`. En este caso, Amazon Personalize no utiliza esa parte de la expresión para filtrar recomendaciones. 

------
#### [ SDK for Python (Boto3) ]

```
import boto3

personalize_runtime = boto3.client("personalize-runtime")

response = personalize_runtime.get_recommendations(
    campaignArn = "Campaign ARN",
    userId = "User ID",
    filterArn = "Filter ARN",
    filterValues = {
      "Parameter name": "\"value1\"",
      "Parameter name": "\"value1\",\"value2\",\"value3\""
      ....
    }
)
```

------
#### [ SDK for Java 2.x ]

En el siguiente ejemplo, se utilizan dos parámetros, uno con dos valores y otro con uno. Según la expresión de filtro, modifique el código para añadir o eliminar los campos parameterName y parameterValue.

```
public static void getFilteredRecs(PersonalizeRuntimeClient personalizeRuntimeClient,
                                   String campaignArn,
                                   String userId,
                                   String filterArn,
                                   String parameter1Name,
                                   String parameter1Value1,
                                   String parameter1Value2,
                                   String parameter2Name,
                                   String parameter2Value){

    try {

        Map<String, String> filterValues = new HashMap<>();

        filterValues.put(parameter1Name, String.format("\"%1$s\",\"%2$s\"",
                parameter1Value1, parameter1Value2));
        filterValues.put(parameter2Name, String.format("\"%1$s\"",
                parameter2Value));

        GetRecommendationsRequest recommendationsRequest = GetRecommendationsRequest.builder()
                .campaignArn(campaignArn)
                .numResults(20)
                .userId(userId)
                .filterArn(filterArn)
                .filterValues(filterValues)
                .build();

        GetRecommendationsResponse recommendationsResponse = personalizeRuntimeClient.getRecommendations(recommendationsRequest);
        List<PredictedItem> items = recommendationsResponse.itemList();

        for (PredictedItem item: items) {
            System.out.println("Item Id is : "+item.itemId());
            System.out.println("Item score is : "+item.score());
        }
    } catch (PersonalizeRuntimeException e) {
        System.err.println(e.awsErrorDetails().errorMessage());
        System.exit(1);
    }
}
```

------
#### [ SDK for JavaScript v3 ]

```
// Get service clients module and commands using ES6 syntax.
import { GetRecommendationsCommand } from "@aws-sdk/client-personalize-runtime";
import { personalizeRuntimeClient } from "./libs/personalizeClients.js";
// Or, create the client here:
// const personalizeRuntimeClient = new PersonalizeRuntimeClient({ region: "REGION"});

// Set recommendation request parameters.
export const getRecommendationsParam = {
  campaignArn: "CAMPAIGN_ARN" /* required */,
  userId: "USER_ID" /* required */,
  numResults: 15 /* optional */,
  filterArn: "FILTER_ARN" /* required to filter recommendations */,
  filterValues: {
    PROPERTY:
      '"VALUE"' /* Only required if your filter has a placeholder parameter */,
  },
};

export const run = async () => {
  try {
    const response = await personalizeRuntimeClient.send(
      new GetRecommendationsCommand(getRecommendationsParam),
    );
    console.log("Success!", response);
    return response; // For unit tests.
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

------

### Eliminar un filtro (SDK de AWS Python)
<a name="delete-filter-sdk"></a>

 Utilice el siguiente método `delete_filter` para eliminar un filtro. Sustituya `filter ARN` por el ARN del filtro. 

```
import boto3
personalize = boto3.client("personalize")

response = personalize.delete_filter(
  filterArn = "filter ARN"
)
```