gpt4 book ai didi

amazon-dynamodb - 删除 Dynamodb 表中具有重复值的项目

转载 作者:行者123 更新时间:2023-12-05 01:18:57 25 4
gpt4 key购买 nike

我有一个具有以下结构的 dynamodb 表:

{  
accountId: string,//PRIMARY KEY
userId: string,//SORT KEY
email: string,
dateCreated: number // timestamp
}

我想执行一项操作,从表中删除所有具有重复电子邮件的项目,但具有最早的 dateCreated 属性的项目除外。

这个操作在DynamoDB中可行吗?

谢谢

最佳答案

首先,您需要分区键和排序键才能从 DynamoDB 中删除项目。除非,你知道 accountIduserId , 不能执行删除项目操作。

在上述用例中,email 都不是也不dateCreated属性是关键属性的一部分。

此外,排序功能仅适用于排序键属性。

方法一:-

首选,如果它是一次性事件

  1. 获取数据并根据 dateCreated 识别旧值在客户端
  2. 根据accountId删除DynamoDB上的数据和 userId

方法 2:-

如果经常需要,则首选它

  1. 创建一个 GSI,散列键为 email并将键排序为 dateCreated

  2. 假设您知道要查询的电子邮件 ID 并确定它是否有重复项,您可以使用带有索引名称、电子邮件 ID 值和 ScanIndexForward查询 API值为 false(即降序)

结果集将在顶部有最新记录的电子邮件 ID。您可以忽略最上面的记录并使用 accountId 运行 Delete APIuserId用于其余项目。

方法 3:-

如果数据可以在平面文件中管理并运行一些程序来查找重复项,则首选方法

  1. 您可以使用 AWS Data Pipeline 将数据导出到 S3 存储桶
  2. 运行一些程序来读取文件以找到重复项并执行 DynamoDB 删除查询以删除项目

方法 4:-

数据量大时的首选方法

  1. 您可以使用 AWS Data Pipeline 将数据导出到 AWS EMR
  2. 运行一些查询以查找重复项并执行 DynamoDB 删除查询以删除项目

注意:-

请注意,如果您希望使用带有子查询的 SQL 来识别最新更新的记录并删除其余记录,这在 DynamoDB 上是不可能的

Export data to S3

关于amazon-dynamodb - 删除 Dynamodb 表中具有重复值的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42728893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com