Python DynamoDB中单个散列键的多个范围键

Python DynamoDB中单个散列键的多个范围键,python,python-3.x,amazon-web-services,amazon-dynamodb,boto3,Python,Python 3.x,Amazon Web Services,Amazon Dynamodb,Boto3,我有以下不同公司名称和记录的项目(记录数约为110K): 我的关键架构是: table = dynamodb.create_table( TableName='table', KeySchema=[ {'AttributeName':'Company','KeyType':'HASH'},{'AttributeName': 'Date','KeyType': 'RANGE'} ], AttributeDefinitions=[ {'AttributeName':'Company'

我有以下不同公司名称和记录的项目(记录数约为110K):

我的关键架构是:

table = dynamodb.create_table(
TableName='table',
KeySchema=[
    {'AttributeName':'Company','KeyType':'HASH'},{'AttributeName': 'Date','KeyType': 'RANGE'}
],
AttributeDefinitions=[
    {'AttributeName':'Company','AttributeType':'S'},{'AttributeName':'Date','AttributeType':'S'}
],
ProvisionedThroughput={
        'ReadCapacityUnits': 100,
        'WriteCapacityUnits': 100
    }
)
我的要求是:

  • 我需要将所有行(如上所述)插入dynamoDB(而不覆盖
  • 我知道我可以添加另一列作为ID(UUID或GUID)作为范围键,以避免覆盖
  • 但是我是否有可能保留日期属性作为范围键(在这里我可以查询日期范围)。提前感谢

您可以使用
ConditionExpression
检查现有值。只有满足条件,API操作才会成功

如果不满足条件,则应获得
条件检查失败异常

ConditionExpression : "Company <> :companyVal AND #Date <> :dateVal",
ExpressionAttributeNames : {
    '#Date' : 'Date'
},
ExpressionAttributeValues : {
    ":yearVal" : companyVal,
    ":dateVal" : dateVal
}
ConditionExpression:“Company:companyVal和#Date:dateVal”,
表达式属性名称:{
“#日期”:“日期”
},
表达式属性值:{
“:yearVal”:companyVal,
“:dateVal”:dateVal
}
主键:-

主键唯一地标识表中的每个项。小学 键可以是简单的(分区键)或复合的(分区键和排序) 键)


在基本情况下,公司和日期的组合必须是唯一的。它不能有重复的值。

请仔细阅读我的上述需求。我说我需要添加具有相同散列键和相同范围键的两个条目。例如:-{“公司”:“ABCD”,“频率”:“年度”,“日期”:“2016-03-31”},{“公司”:“ABCD”,“频率”:“季度”,“日期”:“2016-03-31”}但根据您的回答,我只能检查并添加一项。明白了。有可能吗?有其他方法吗?更新了主键定义。
ConditionExpression : "Company <> :companyVal AND #Date <> :dateVal",
ExpressionAttributeNames : {
    '#Date' : 'Date'
},
ExpressionAttributeValues : {
    ":yearVal" : companyVal,
    ":dateVal" : dateVal
}