AWS Personalize:转储由 PutEvent 创建的用户-项目交互数据集
AWS Personalize: Dumping User-item interaction Dataset Created By PutEvent
根据 AWS Personalize 文档,我成功地从 S3 导入了我的数据集(用户、项目、交互),创建了一个 EventTrcker,训练了模型,并部署了活动。该解决方案没有任何问题,我得到了建议。
我依靠 Putevent 添加新的用户-项目交互事件。我还在我的 s3 中使用 Lambda+firehose 转储了这些交互事件。但我想知道 AWS Personalize 是否在内部 creates/augments 原始用户-项目交互数据集?我如何访问和下载数据集的修订版本?我在“数据集组 > 数据集”中看不到任何新数据集,而不是我原来的 3 个数据集...
我更喜欢定期将其从 AWS Personalize 转储到我的 S3 存储,而不是使用我自己的 Lambda+Firehose 解决方案。
这是我的 Putevent 调用的输出。我看到 200...但不确定它是否正常工作...我应该在 putevents 创建的“数据集组 > 数据集”中看到任何新数据集吗?
{
"ResponseMetadata": {
"RequestId": "a6c96496-cbd6-4ad8-9183-371d1794cbd8",
"HTTPStatusCode": 200,
"HTTPHeaders": {
"content-type": "application/json",
"date": "Mon, 04 Jan 2021 18:04:28 GMT",
"x-amzn-requestid": "a6c96496-cbd6-4ad8-9183-371d1794cbd8",
"content-length": "0",
"connection": "keep-alive"
},
"RetryAttempts": 0
}
}
更新:现在可以了
AWS 文档:
https://docs.aws.amazon.com/personalize/latest/dg/export-data.html
您可以使用此 AWS CLI 命令仅导出已添加但 PutEvents/PutUsers/PutItems API 调用的交互:
aws personalize create-dataset-export-job \
--job-name job name \
--dataset-arn dataset ARN \
--job-output "{\"s3DataDestination\":{\"kmsKeyArn\":\"kms key ARN\",\"path\":\"s3://bucket-name/folder-name/\"}}" \
--role-arn role ARN \
--ingestion-mode PUT
在那种情况下 --ingestion-mode PUT
将确保:
Specify PUT to export only data that you imported incrementally using the console or the PutEvents, PutUsers, or PutItems operations.
所以我相信它涵盖了您的用例。
不,不可能
现在根本不可能导出这些数据。
没有 API 可以在 Personalize 中检索您的交互数据集的转储。
我相信 Lambda + Firehose 解决方法是正确的方法。
但是如何测试 PutEvents 是否有效?
为确保通过 PutEvents 添加的交互,您可以使用过滤器功能:
https://docs.aws.amazon.com/personalize/latest/dg/filter-expressions.html
几乎创建了一个新的过滤器,具有类似的表达式:
EXCLUDE ItemID WHERE Interactions.EVENT_TYPE IN ("your_event_type_name")
这将从推荐中排除用户之前与之交互过的任何项目。
然后你可以测试一下,通过PutEvents API 添加的事件是否被正确识别:
- 如上所述创建过滤器表达式。
- 为简单的推荐创建任何活动(用户个性化配方)。
- 将过滤器连接到广告系列。
- 获取任何用户的推荐并将它们保存在某个地方。
- 使用任何推荐的项目调用 PutEvents API,returned in 4 and user id from 4.
- 再次获取与 4 中相同用户的推荐。
如果您使用 PutEvents 调用添加的项目不再被推荐,那么您有证据表明通过 PutEvents 调用添加的事件已正确添加到交互数据集。
如果在这种情况下 PutEvents 调用不影响推荐怎么办?
那么您只是在 API 调用中提供了不正确的值。个性化可能 return 200 响应,即使提供的事件无效。
要解决这个问题,请尝试:
- 确保日期格式正确。如果有更多更新的事件(可以在解决方案配置中配置它),Personalize 可能会忽略具有非常旧时间戳的事件。
- 检查您是否没有在 PutEvents 参数中为 sessionId、userId、trackingId 传递任何奇怪的值,例如“null”或“undefined”。这可能会导致 Personalize (https://github.com/aws/aws-sdk-js/issues/3371)
忽略该事件
- 确保您传递的 eventType 值正确(应与解决方案和过滤器中的 eventType 匹配)。
- 如果它仍然不起作用,请使用示例 PutEvents API 调用参数向 AWS 提出支持请求。
有没有更简单的解决方案?
嗯,也许有,但在我们的项目中,我们使用这种方法,它还会测试过滤功能是否正常工作。以后你可能会用到 Filtering,所以我相信这是一个很好的方法。
根据 AWS Personalize 文档,我成功地从 S3 导入了我的数据集(用户、项目、交互),创建了一个 EventTrcker,训练了模型,并部署了活动。该解决方案没有任何问题,我得到了建议。
我依靠 Putevent 添加新的用户-项目交互事件。我还在我的 s3 中使用 Lambda+firehose 转储了这些交互事件。但我想知道 AWS Personalize 是否在内部 creates/augments 原始用户-项目交互数据集?我如何访问和下载数据集的修订版本?我在“数据集组 > 数据集”中看不到任何新数据集,而不是我原来的 3 个数据集...
我更喜欢定期将其从 AWS Personalize 转储到我的 S3 存储,而不是使用我自己的 Lambda+Firehose 解决方案。
这是我的 Putevent 调用的输出。我看到 200...但不确定它是否正常工作...我应该在 putevents 创建的“数据集组 > 数据集”中看到任何新数据集吗?
{
"ResponseMetadata": {
"RequestId": "a6c96496-cbd6-4ad8-9183-371d1794cbd8",
"HTTPStatusCode": 200,
"HTTPHeaders": {
"content-type": "application/json",
"date": "Mon, 04 Jan 2021 18:04:28 GMT",
"x-amzn-requestid": "a6c96496-cbd6-4ad8-9183-371d1794cbd8",
"content-length": "0",
"connection": "keep-alive"
},
"RetryAttempts": 0
}
}
更新:现在可以了
AWS 文档: https://docs.aws.amazon.com/personalize/latest/dg/export-data.html
您可以使用此 AWS CLI 命令仅导出已添加但 PutEvents/PutUsers/PutItems API 调用的交互:
aws personalize create-dataset-export-job \
--job-name job name \
--dataset-arn dataset ARN \
--job-output "{\"s3DataDestination\":{\"kmsKeyArn\":\"kms key ARN\",\"path\":\"s3://bucket-name/folder-name/\"}}" \
--role-arn role ARN \
--ingestion-mode PUT
在那种情况下 --ingestion-mode PUT
将确保:
Specify PUT to export only data that you imported incrementally using the console or the PutEvents, PutUsers, or PutItems operations.
所以我相信它涵盖了您的用例。
不,不可能
现在根本不可能导出这些数据。
没有 API 可以在 Personalize 中检索您的交互数据集的转储。
我相信 Lambda + Firehose 解决方法是正确的方法。
但是如何测试 PutEvents 是否有效?
为确保通过 PutEvents 添加的交互,您可以使用过滤器功能: https://docs.aws.amazon.com/personalize/latest/dg/filter-expressions.html
几乎创建了一个新的过滤器,具有类似的表达式:
EXCLUDE ItemID WHERE Interactions.EVENT_TYPE IN ("your_event_type_name")
这将从推荐中排除用户之前与之交互过的任何项目。
然后你可以测试一下,通过PutEvents API 添加的事件是否被正确识别:
- 如上所述创建过滤器表达式。
- 为简单的推荐创建任何活动(用户个性化配方)。
- 将过滤器连接到广告系列。
- 获取任何用户的推荐并将它们保存在某个地方。
- 使用任何推荐的项目调用 PutEvents API,returned in 4 and user id from 4.
- 再次获取与 4 中相同用户的推荐。
如果您使用 PutEvents 调用添加的项目不再被推荐,那么您有证据表明通过 PutEvents 调用添加的事件已正确添加到交互数据集。
如果在这种情况下 PutEvents 调用不影响推荐怎么办?
那么您只是在 API 调用中提供了不正确的值。个性化可能 return 200 响应,即使提供的事件无效。
要解决这个问题,请尝试:
- 确保日期格式正确。如果有更多更新的事件(可以在解决方案配置中配置它),Personalize 可能会忽略具有非常旧时间戳的事件。
- 检查您是否没有在 PutEvents 参数中为 sessionId、userId、trackingId 传递任何奇怪的值,例如“null”或“undefined”。这可能会导致 Personalize (https://github.com/aws/aws-sdk-js/issues/3371) 忽略该事件
- 确保您传递的 eventType 值正确(应与解决方案和过滤器中的 eventType 匹配)。
- 如果它仍然不起作用,请使用示例 PutEvents API 调用参数向 AWS 提出支持请求。
有没有更简单的解决方案?
嗯,也许有,但在我们的项目中,我们使用这种方法,它还会测试过滤功能是否正常工作。以后你可能会用到 Filtering,所以我相信这是一个很好的方法。