Amazon dynamodb 删除Dynamodb表中具有重复值的项

Amazon dynamodb 删除Dynamodb表中具有重复值的项,amazon-dynamodb,Amazon Dynamodb,我有一个dynamodb表,其结构如下: { accountId: string,//PRIMARY KEY userId: string,//SORT KEY email: string, dateCreated: number // timestamp } 我想执行一个操作,从表中删除所有具有重复电子邮件的项目,但具有最早dateCreated属性的项目除外 在DynamoDB中可以进行此操作吗 谢谢首先,您需要分区键和排序键从DynamoDB中删除项目。除非您知道a

我有一个dynamodb表,其结构如下:

{  
  accountId: string,//PRIMARY KEY 
  userId: string,//SORT KEY
  email: string,
  dateCreated: number // timestamp
}
我想执行一个操作,从表中删除所有具有重复电子邮件的项目,但具有最早dateCreated属性的项目除外

在DynamoDB中可以进行此操作吗


谢谢

首先,您需要分区键和排序键从DynamoDB中删除项目。除非您知道
accountId
userId
,否则无法执行删除项操作

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

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

方法1:-

如果是一次性活动,则为首选活动

  • 获取数据并根据客户端的
    dateCreated
    识别旧值
  • 根据
    accountId
    userId
    删除DynamoDB上的数据
  • 方法2:-

    如果经常需要,则首选

  • 创建一个GSI,哈希键为
    email
    ,排序键为
    dateCreated

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

  • 结果集将具有电子邮件id,最新记录位于顶部。您可以忽略顶部记录,并对其余项目使用
    accountId
    userId
    运行Delete API

    方法3:-

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

  • 您可以使用AWS数据管道将数据导出到S3 bucket
  • 运行一些程序读取文件以查找重复项,并执行DynamoDB delete查询以删除该项
  • 方法4:-

    如果数据较大,则首选方法

  • 可以使用AWS数据管道将数据导出到AWS EMR
  • 运行一些查询以查找重复项,并执行DynamoDB delete查询以删除该项
  • 注意:-

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


    首先,您需要分区键和排序键来从DynamoDB中删除项目。除非您知道
    accountId
    userId
    ,否则无法执行删除项操作

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

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

    方法1:-

    如果是一次性活动,则为首选活动

  • 获取数据并根据客户端的
    dateCreated
    识别旧值
  • 根据
    accountId
    userId
    删除DynamoDB上的数据
  • 方法2:-

    如果经常需要,则首选

  • 创建一个GSI,哈希键为
    email
    ,排序键为
    dateCreated

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

  • 结果集将具有电子邮件id,最新记录位于顶部。您可以忽略顶部记录,并对其余项目使用
    accountId
    userId
    运行Delete API

    方法3:-

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

  • 您可以使用AWS数据管道将数据导出到S3 bucket
  • 运行一些程序读取文件以查找重复项,并执行DynamoDB delete查询以删除该项
  • 方法4:-

    如果数据较大,则首选方法

  • 可以使用AWS数据管道将数据导出到AWS EMR
  • 运行一些查询以查找重复项,并执行DynamoDB delete查询以删除该项
  • 注意:-

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


    荣誉。这是一个解释得很好的答案。这是一个解释得很好的答案。