결과 게시 및 보기 - Personalize

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

결과 게시 및 보기

Amazon Personalize는 각 지표에 대한 보고서를 아마존 S3에 CloudWatch 전송합니다.

  • PutEvents 데이터 및 증분 대량 데이터의 경우 Amazon Personalize는 자동으로 메트릭을 에 전송합니다. CloudWatch 에서 CloudWatch 보고서를 보고 식별하는 방법에 대한 자세한 내용은 을 참조하십시오. 에서 측정항목 보기 CloudWatch

  • 모든 대량 데이터의 경우, 지표 어트리뷰션을 생성할 때 S3 버킷을 제공하면 상호작용 데이터에 대한 데이터세트 가져오기 작업을 생성할 때마다 S3 버킷에 지표 보고서를 게시하도록 선택할 수 있습니다.

    지표 보고서를 S3에 게시하는 방법에 대한 자세한 내용은 S3에 지표 게시단원을 참조하세요.

에서 측정항목 보기 CloudWatch

중요

지표 어트리뷰션을 생성하고 이벤트를 기록하거나 증분 대량 데이터를 가져온 후에는 지표당 월별 CloudWatch 비용이 발생합니다. CloudWatch 요금에 대한 자세한 내용은 Amazon CloudWatch 가격 책정 페이지를 참조하십시오. 메트릭 전송을 CloudWatch 중단하려면 지표 어트리뷰션을 삭제하십시오.

에서 CloudWatch 지표를 보려면 지표 그래프 작성에 있는 절차를 완료하세요. 그래프로 표시할 수 있는 최소 기간은 15분입니다. 검색어에는 지표 어트리뷰션을 만들 때 지표에 지정한 이름을 지정합니다.

다음은 지표가 표시되는 CloudWatch 방식의 예입니다. 이 지표는 서로 다른 두 추천자에 대한 15분 마다의 클릭률을 보여줍니다.

서로 다른 두 추천자의 15분마다 클릭률을 그래프로 보여줍니다.

S3에 지표 게시

S3에 지표를 게시하려면 지표 어트리뷰션에 S3 버킷의 경로를 제공합니다. 그런 다음 데이터세트 가져오기 작업을 생성할 때 S3에 보고서를 게시합니다.

작업이 완료되면 S3 버킷에서 지표를 찾을 수 있습니다. 지표를 게시할 때마다 Personalize는 S3 버킷에 새 파일을 생성합니다. 파일 이름에는 다음과 같은 가져오기 방법과 날짜가 포함됩니다.

AggregatedAttributionMetrics - ImportMethod - Timestamp.csv

다음은 지표 보고서 CSV 파일의 처음 몇 행이 나타나는 방식의 예입니다. 이 예제의 지표는 15분 간격으로 서로 다른 두 추천자의 총 클릭 수를 보고합니다. 각 추천자는 EVENT_ATTRIBUTION_SOURCE 열의 리소스 이름(ARN)을 기준으로 식별할 수 있습니다.

METRIC_NAME,EVENT_TYPE,VALUE,MATH_FUNCTION,EVENT_ATTRIBUTION_SOURCE,TIMESTAMP COUNTWATCHES,WATCH,12.0,samplecount,arn:aws:personalize:us-west-2:acctNum:recommender/recommender1Name,1666925124 COUNTWATCHES,WATCH,112.0,samplecount,arn:aws:personalize:us-west-2:acctNum:recommender/recommender2Name,1666924224 COUNTWATCHES,WATCH,10.0,samplecount,arn:aws:personalize:us-west-2:acctNum:recommender/recommender1Name,1666924224 COUNTWATCHES,WATCH,254.0,samplecount,arn:aws:personalize:us-west-2:acctNum:recommender/recommender2Name,1666922424 COUNTWATCHES,WATCH,112.0,samplecount,arn:aws:personalize:us-west-2:acctNum:recommender/recommender1Name,1666922424 COUNTWATCHES,WATCH,100.0,samplecount,arn:aws:personalize:us-west-2:acctNum:recommender/recommender2Name,1666922424 ...... .....

S3에 대량 데이터에 대한 지표 게시(콘솔)

Personalize 콘솔을 사용하여 S3 버킷에 지표를 게시하려면 데이터세트 가져오기 작업을 생성하고 S3에 이벤트 지표 게시에서 이 가져오기 작업에 대한 지표 게시를 선택합니다.

자세한 지침은 을 참조하십시오. step-by-step 대량 레코드 가져오기(콘솔)

S3에 대량 데이터에 대한 지표 게시(AWS CLI)

AWS Command Line Interface (AWS CLI) 를 사용하여 Amazon S3 버킷에 지표를 게시하려면 다음 코드를 사용하여 데이터세트 가져오기 작업을 만들고 publishAttributionMetricsToS3 플래그를 제공하십시오. 특정 작업에 대한 지표를 게시하지 않으려는 경우 플래그를 생략합니다. 각 파라미터에 대한 자세한 내용은 CreateDatasetImportJob단원을 참조하세요.

aws personalize create-dataset-import-job \ --job-name dataset import job name \ --dataset-arn dataset arn \ --data-source dataLocation=s3://bucketname/filename \ --role-arn roleArn \ --import-mode INCREMENTAL \ --publish-attribution-metrics-to-s3

Amazon S3 (AWS SDK) 에 대량 데이터에 대한 지표 게시

AWS SDK를 사용하여 Amazon S3 버킷에 지표를 게시하려면 데이터세트 가져오기 작업을 생성하고 publishAttributionMetricsToS3 true로 설정합니다. 각 파라미터에 대한 자세한 내용은 CreateDatasetImportJob단원을 참조하세요.

SDK for Python (Boto3)
import boto3 personalize = boto3.client('personalize') response = personalize.create_dataset_import_job( jobName = 'YourImportJob', datasetArn = 'dataset_arn', dataSource = {'dataLocation':'s3://bucket/file.csv'}, roleArn = 'role_arn', importMode = 'INCREMENTAL', publishAttributionMetricsToS3 = True ) dsij_arn = response['datasetImportJobArn'] print ('Dataset Import Job arn: ' + dsij_arn) description = personalize.describe_dataset_import_job( datasetImportJobArn = dsij_arn)['datasetImportJob'] print('Name: ' + description['jobName']) print('ARN: ' + description['datasetImportJobArn']) print('Status: ' + description['status'])
SDK for Java 2.x
public static String createPersonalizeDatasetImportJob(PersonalizeClient personalizeClient, String jobName, String datasetArn, String s3BucketPath, String roleArn, ImportMode importMode, boolean publishToS3) { long waitInMilliseconds = 60 * 1000; String status; String datasetImportJobArn; try { DataSource importDataSource = DataSource.builder() .dataLocation(s3BucketPath) .build(); CreateDatasetImportJobRequest createDatasetImportJobRequest = CreateDatasetImportJobRequest.builder() .datasetArn(datasetArn) .dataSource(importDataSource) .jobName(jobName) .roleArn(roleArn) .importMode(importMode) .publishAttributionMetricsToS3(publishToS3) .build(); datasetImportJobArn = personalizeClient.createDatasetImportJob(createDatasetImportJobRequest) .datasetImportJobArn(); DescribeDatasetImportJobRequest describeDatasetImportJobRequest = DescribeDatasetImportJobRequest.builder() .datasetImportJobArn(datasetImportJobArn) .build(); long maxTime = Instant.now().getEpochSecond() + 3 * 60 * 60; while (Instant.now().getEpochSecond() < maxTime) { DatasetImportJob datasetImportJob = personalizeClient .describeDatasetImportJob(describeDatasetImportJobRequest) .datasetImportJob(); status = datasetImportJob.status(); System.out.println("Dataset import job status: " + status); if (status.equals("ACTIVE") || status.equals("CREATE FAILED")) { break; } try { Thread.sleep(waitInMilliseconds); } catch (InterruptedException e) { System.out.println(e.getMessage()); } } return datasetImportJobArn; } catch (PersonalizeException e) { System.out.println(e.awsErrorDetails().errorMessage()); } return ""; }
SDK for JavaScript v3
// Get service clients and commands using ES6 syntax. import { CreateDatasetImportJobCommand, PersonalizeClient } from "@aws-sdk/client-personalize"; // create personalizeClient const personalizeClient = new PersonalizeClient({ region: "REGION" }); // Set the dataset import job parameters. export const datasetImportJobParam = { datasetArn: 'DATASET_ARN', /* required */ dataSource: { dataLocation: 's3://<name of your S3 bucket>/<folderName>/<CSVfilename>.csv' /* required */ }, jobName: 'NAME', /* required */ roleArn: 'ROLE_ARN', /* required */ importMode: "FULL", /* optional, default is FULL */ publishAttributionMetricsToS3: true /* set to true to publish metrics to Amazon S3 bucket */ }; export const run = async () => { try { const response = await personalizeClient.send(new CreateDatasetImportJobCommand(datasetImportJobParam)); console.log("Success", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();