

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Criar uma atribuição de métrica do Amazon Personalize
<a name="creating-metric-attribution"></a>

**Importante**  
 Depois de criar uma atribuição métrica e registrar eventos ou importar dados incrementais em massa, você incorrerá em algum custo mensal CloudWatch por métrica. Para obter informações sobre CloudWatch preços, consulte a página de [ CloudWatch preços da Amazon](https://aws.amazon.com/cloudwatch/pricing/). Para parar de enviar métricas para CloudWatch, [exclua a atribuição da métrica](deleting-metric-attribution.md). 

Para começar a gerar relatórios de métricas, você cria uma atribuição métrica e importa dados de interações. Ao criar uma atribuição métrica, você especifica uma lista de tipos de eventos para relatar. Para cada tipo de evento, você especifica uma função que o Amazon Personalize aplica à medida que coleta os dados. As funções disponíveis incluem `SUM(DatasetType.COLUMN_NAME)` e `SAMPLECOUNT()`. 

 Por exemplo, você pode ter um aplicativo de streaming de vídeo on-line e querer monitorar duas métricas: a taxa de cliques para recomendações e a duração total dos filmes assistidos, em que cada vídeo no conjunto de dados Itens inclui um atributo `LENGTH`. Você cria uma atribuição métrica e adiciona duas métricas, cada uma com um tipo de evento e uma função. A primeira pode ser para o tipo de evento `Click` com uma função `SAMPLECOUNT()`. A segunda pode ser para o tipo de evento `Watch` com uma função `SUM(Items.LENGTH)`. 

É possível aplicar funções `SUM()` somente a colunas numéricas dos conjuntos de dados de itens e de interações com itens. Para aplicar uma função `SUM()` a uma coluna em um conjunto de dados Itens, você deve primeiro importar os metadados do item.

 Você pode criar uma atribuição métrica com o console AWS Command Line Interface Amazon Personalize ou SDKS. AWS 

**Topics**
+ [Criar uma atribuição de métrica (console)](#create-metric-attribution-console)
+ [Criar uma atribuição de métrica (AWS CLI)](#create-metric-attribution-cli)
+ [Criar uma atribuição de métrica (AWS SDKs)](#create-metric-attribution-sdk)

## Criar uma atribuição de métrica (console)
<a name="create-metric-attribution-console"></a>

 Para criar uma atribuição métrica com o console Amazon Personalize, você navega até a página de **atribuição de métrica** e escolhe **Criar atribuição métrica**. Ao criar uma atribuição métrica, você especifica um caminho de bucket opcional do Amazon S3, seu perfil de serviço do IAM do Amazon Personalize e uma lista de métricas para gerar relatórios. 

 Ao criar um trabalho de importação do conjunto de dados de interações com itens com o console do Amazon Personalize, há a opção de criar uma atribuição de métrica em uma nova guia. Em seguida, você pode retornar ao trabalho de importação para concluí-lo. Se você já estiver na página **Configurar atribuição de métricas**, pode pular para a etapa 4. 

**Para criar uma atribuição de métrica**

1. Abra o console Amazon Personalize em [https://console.aws.amazon.com/personalize/casa](https://console.aws.amazon.com/personalize/home) e faça login na sua conta. 

1. Escolha seu grupo de conjuntos de dados.

1. No painel de navegação, em **Recursos personalizados**, selecione **Atribuição de métrica**.

1. Em **Detalhes da atribuição de métrica**, escolha **Criar atribuição de métrica**.

1. Na página **Configurar atribuição de métrica**, dê um nome à atribuição métrica.

1. Se você quer publicar métricas no Amazon S3 para o **caminho de saída de dados do Amazon S3**, insira o bucket de destino do Amazon S3. Isso permite publicar métricas sempre que você cria um trabalho de importação do conjunto de dados. Use a seguinte sintaxe:

   **s3://amzn-s3-demo-bucket/<folder> path>**

1. Se você estiver usando AWS KMS para criptografia, para **ARN da chave KMS**, insira o Amazon Resource Name (ARN) para a chave. AWS KMS Conceda permissão ao Amazon Personalize e ao seu perfil de serviço do IAM do Amazon Personalize para usar sua chave. Para obter mais informações, consulte [Conceder permissão ao Amazon Personalize para usar sua chave AWS KMS](granting-personalize-key-access.md).

1. Em **perfil do IAM**, escolha entre criar um novo perfil de serviço ou usar um perfil existente. A função que você escolher deve ter `PutMetricData` permissões CloudWatch. Se você quiser publicar no Amazon S3, a função deve ter permissões `PutObject` para seu bucket do Amazon S3. 

   Para usar a função que você criou[Criar um perfil do IAM para o Amazon Personalize](set-up-required-permissions.md#set-up-create-role-with-permissions), talvez seja necessário adicionar políticas para o CloudWatch Amazon S3.

   Para ver exemplos de políticas, consulte [Concedendo ao Amazon Personalize acesso a CloudWatch](metric-attribution-requirements.md#metric-attribution-cw-permissions) e [Conceder ao Amazon Personalize acesso ao bucket do Amazon S3](metric-attribution-requirements.md#metric-attribution-s3-permissions).

1. Escolha **Próximo**.

1. Na página **Definir atributos de métrica**, escolha como definir métricas. Escolha **Criar atributos de métrica** para usar a ferramenta Builder. Escolha **Atributos de métrica de entrada** para inserir métricas no formato JSON.
   + Se você escolher **Criar atributos de métrica**, para cada métrica, forneça um nome, tipo de evento e escolha uma função. Para funções `SUM()`, escolha o nome da coluna. Escolha **Adicionar atributo de métrica** para adicionar métricas adicionais. 
   + Se você escolher **Atributos de métrica de entrada**, insira cada métrica no formato JSON. Veja a seguir como formatar uma métrica.

     ```
     {
         "EventType": "watch",
         "MetricName": "MinutesWatchedTracker", 
         "MetricMathExpression": "SUM(Items.LENGTH)"
     }
     ```

1. Escolha **Próximo**.

1. Na **página Revisar e criar**, revise os detalhes da nova atribuição de métrica. Para fazer alterações, escolha **Previous (Anterior)**. Para criar a atribuição de métrica, escolha **Criar**. Quando a atribuição de métricas está ativa, você pode começar a importar dados e visualizar os resultados. Para obter informações sobre a exibição dos resultados, consulte [Visualizando gráficos de dados métricos em CloudWatch](metric-attribution-results-cloudwatch.md). Para obter informações sobre como publicar resultados no Amazon S3, consulte [Publicar relatórios de atribuição de métrica no Amazon S3](metric-attribution-results-s3.md).

## Criar uma atribuição de métrica (AWS CLI)
<a name="create-metric-attribution-cli"></a>

 O código a seguir mostra como criar uma atribuição de métricas com o AWS Command Line Interface. A função que você especificar deve ter `PutMetricData` permissões CloudWatch e, se estiver publicando no Amazon S3, `PutObject` permissões para seu bucket do Amazon S3. Para usar a função que você criou[Criar um perfil do IAM para o Amazon Personalize](set-up-required-permissions.md#set-up-create-role-with-permissions), talvez seja necessário adicionar políticas para o CloudWatch Amazon S3. Para ver exemplos de políticas, consulte [Concedendo ao Amazon Personalize acesso a CloudWatch](metric-attribution-requirements.md#metric-attribution-cw-permissions) e [Conceder ao Amazon Personalize acesso ao bucket do Amazon S3](metric-attribution-requirements.md#metric-attribution-s3-permissions). 

 Para cada métrica, especifique um nome, tipo de evento e expressão (uma função). As funções disponíveis incluem `SUM(DatasetType.COLUMN_NAME)` e `SAMPLECOUNT()`. Para as funções SUM(), especifique o tipo de conjunto de dados e o nome da coluna. Por exemplo, .`SUM(Items.LENGTH)` Para obter informações sobre cada parâmetro, consulte [CreateMetricAttribution](API_CreateMetricAttribution.md). 

```
aws personalize create-metric-attribution \
--name metric attribution name \
--dataset-group-arn dataset group arn \
--metrics-output-config "{\"roleArn\": \"Amazon Personalize service role ARN\", \"s3DataDestination\":{\"kmsKeyArn\":\"kms key ARN\",\"path\":\"s3://amzn-s3-demo-bucket/folder-name/\"}}" \
--metrics "[{
  \"eventType\": \"event type\",
  \"expression\": \"SUM(DatasetType.COLUMN_NAME)\",
  \"metricName\": \"metric name\"
}]"
```

## Criar uma atribuição de métrica (AWS SDKs)
<a name="create-metric-attribution-sdk"></a>

 O código a seguir mostra como criar uma atribuição de métricas com o SDK for Python (Boto3). A função que você especificar deve ter `PutMetricData` permissões CloudWatch e, se estiver publicando no Amazon S3, `PutObject` permissões para seu bucket do Amazon S3. Para usar a função que você criou[Criar um perfil do IAM para o Amazon Personalize](set-up-required-permissions.md#set-up-create-role-with-permissions), talvez seja necessário adicionar políticas para o CloudWatch Amazon S3. Para ver exemplos de políticas, consulte [Concedendo ao Amazon Personalize acesso a CloudWatch](metric-attribution-requirements.md#metric-attribution-cw-permissions) e [Conceder ao Amazon Personalize acesso ao bucket do Amazon S3](metric-attribution-requirements.md#metric-attribution-s3-permissions). 

 Para cada métrica, especifique um nome, tipo de evento e expressão (uma função). As funções disponíveis incluem `SUM(DatasetType.COLUMN_NAME)` e `SAMPLECOUNT()`. Para as funções SUM(), especifique o tipo de conjunto de dados e o nome da coluna. Por exemplo, .`SUM(Items.LENGTH)` Para obter informações sobre cada parâmetro, consulte [CreateMetricAttribution](API_CreateMetricAttribution.md). 

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

```
import boto3

personalize = boto3.client('personalize')

metricsList = [{ 
      "eventType": "event type",
      "expression": "SUM(DatasetType.COLUMN_NAME)",
      "metricName": "metric name"
}]

outputConfig = {
  "roleArn": "Amazon Personalize service role ARN", 
  "s3DataDestination": {
    "kmsKeyArn": "key ARN", 
    "path": "s3://amzn-s3-demo-bucket/<folder>"
  }
}
response = personalize.create_metric_attribution(
  name = 'metric attribution name',
  datasetGroupArn = 'dataset group arn',
  metricsOutputConfig = outputConfig,
  metrics = metricsList
)

metric_attribution_arn = response['metricAttributionArn']

print ('Metric attribution ARN: ' + metric_attribution_arn)

description = personalize.describe_metric_attribution(
    metricAttributionArn = metric_attribution_arn)['metricAttribution']

print('Name: ' + description['name'])
print('ARN: ' + description['metricAttributionArn'])
print('Status: ' + description['status'])
```

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

```
public static String createMetricAttribution(PersonalizeClient personalizeClient,
                                             String eventType,
                                             String expression,
                                             String metricName,
                                             String metricAttributionName,
                                             String roleArn,
                                             String s3Path,
                                             String kmsKeyArn,
                                             String datasetGroupArn) {
    String metricAttributionArn = "";

    try {

        MetricAttribute attribute = MetricAttribute.builder()
                .eventType(eventType)
                .expression(expression)
                .metricName(metricName)
                .build();

        ArrayList<MetricAttribute> metricAttributes = new ArrayList<>();
        metricAttributes.add(attribute);

        S3DataConfig s3DataDestination = S3DataConfig.builder()
                .kmsKeyArn(kmsKeyArn)
                .path(s3Path)
                .build();

        MetricAttributionOutput outputConfig = MetricAttributionOutput.builder()
                .roleArn(roleArn)
                .s3DataDestination(s3DataDestination)
                .build();

        CreateMetricAttributionRequest createMetricAttributionRequest = CreateMetricAttributionRequest.builder()
                .name(metricAttributionName)
                .datasetGroupArn(datasetGroupArn)
                .metrics(metricAttributes)
                .metricsOutputConfig(outputConfig)
                .build();
        CreateMetricAttributionResponse createMetricAttributionResponse = personalizeClient.createMetricAttribution(createMetricAttributionRequest);

        metricAttributionArn = createMetricAttributionResponse.metricAttributionArn();
        System.out.println("Metric attribution ARN: " + metricAttributionArn);
        return metricAttributionArn;
    } catch (PersonalizeException e) {
        System.out.println(e.awsErrorDetails().errorMessage());
    }
    return "";
}
```

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

```
// Get service clients and commands using ES6 syntax.
import { CreateMetricAttributionCommand, PersonalizeClient } from
  "@aws-sdk/client-personalize";
  
// create personalizeClient
const personalizeClient = new PersonalizeClient({
  region: "REGION"
});

// set the metric attribution param
export const createMetricAttributionParam = {
  name: "METRIC_ATTRIBUTION_NAME",            /* required */
  datasetGroupArn: "DATASET_GROUP_ARN",       /* required */
  metricsOutputConfig: {
    roleArn: "ROLE_ARN",                      /* required */
    s3DataDestination: {                
      kmsKeyArn: "KEY_ARN",                                                      /* optional */
      path: "s3://amzn-s3-demo-bucket/<folderName>/",    /* optional */
    },
  },
  metrics: [                        
    {
      eventType: "EVENT_TYPE",                      /* required for each metric */
      expression: "SUM(DatasetType.COLUMN_NAME)",   /* required for each metric */
      metricName: "METRIC_NAME",                    /* required for each metric */
    }
  ]
};

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

------