Amazon dynamodb 如何查询AWS dynamodb以获得每小时、每天和30天的数据?
我写的查询如下。我能够随时检索数据。我的问题是每分钟都有30张唱片。我想得到帮助,以获得每一个小时的第一张记录和一天24张记录,我需要这30天Amazon dynamodb 如何查询AWS dynamodb以获得每小时、每天和30天的数据?,amazon-dynamodb,dynamodb-queries,Amazon Dynamodb,Dynamodb Queries,我写的查询如下。我能够随时检索数据。我的问题是每分钟都有30张唱片。我想得到帮助,以获得每一个小时的第一张记录和一天24张记录,我需要这30天 var config = new QueryRequest { TableName = "dfgfdgdfg", KeyConditionExpression = "id= :id AND plctime BETWEEN :fromtime AND :totime", ExpressionA
var config = new QueryRequest
{
TableName = "dfgfdgdfg",
KeyConditionExpression = "id= :id AND plctime BETWEEN :fromtime AND :totime",
ExpressionAttributeValues = new Dictionary<string, AttributeValue> {
{
":serialNumber", new AttributeValue {S = id}
},
{
":fromtime", new AttributeValue {S = fromtime }
},
{
":totime", new AttributeValue {S = totime }
}
},
};
return await _dynamoClient.QueryAsync(config);
var config=newqueryrequest
{
TableName=“dfgfdgdfg”,
KeyConditionExpression=“id=:id和plctime介于:fromtime和:totime之间”,
ExpressionAttributeValues=新字典{
{
“:serialNumber”,新属性值{S=id}
},
{
“:fromtime”,新属性值{S=fromtime}
},
{
“:totime”,新属性值{S=totime}
}
},
};
return wait_dynamoClient.QueryAsync(配置);
< /代码> 除了按原样存储记录外,还可以考虑插入另一个这样的记录:
{
pk : "DailyMarker_" + DateTime.Now.ToString("yyMMdd"), // partition key
sk : "HourlyMarker_" + DateTime.Now.ToString("yyMMddhh") // range key
record: <your entire record>
}
{
pk:“DailyMarker_u3;”+DateTime.Now.ToString(“yyMMdd”),//分区键
sk:“HourlyMarker_u”+DateTime.Now.ToString(“yyMMddhh”)//范围键
记录:
}
pk
和sk
的结构应为DailyMarker_201911
和HourlyMarker_2019112101
。基本上,下划线后面的部分充当日期/时间戳,只具有您感兴趣的粒度
插入标记记录时,可以添加先决条件检查,如果先决条件检查失败,将阻止插入(请参阅)。如果条件评估为false,此操作将引发大多数SDK的异常,因此您希望处理该异常
在这一点上,每小时只有第一条记录被插入到这个PK/SK组合中,并且一天的所有SK都在同一个PK下结束
要查询不同的范围,您必须在应用程序代码中执行一些计算,以确定要查询的开始和结束存储桶(pk和sk)。虽然您需要对每个感兴趣的pk进行一次调用,但可以使用
您还可以将pk改为每月而不是每天,这样可以减少要查询的pk数量,同时增加不平衡键(也称为热键)的可能性。添加“ScanIndexForward:true”它将按升序对您的配置进行排序,降序时设置为false。如果您正在搜索fromtime、totime,并且这是一个一小时的时间段,并且您正在按升序进行排序,则只需选择第一个结果。我想获取两个日期之间的数据,它应该每一小时只选择一条记录。好的,为此,我在函数中,在返回结果之前,添加一些逻辑以筛选出不需要的结果,或将确实需要的结果推送到新数组或对象中,然后返回该数组或对象。我喜欢这样做,但返回结果需要很长时间。我正在进行30天的查询,每分钟大约有10条记录,600条记录一个小时,一天1440,30天43200。每个记录有250个属性。这很复杂,所以最好在查询中执行