Python DynamoDB中单个散列键的多个范围键
我有以下不同公司名称和记录的项目(记录数约为110K): 我的关键架构是: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'
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
}