gpt4 book ai didi

javascript - 发电机 : Query only every 10th value

转载 作者:搜寻专家 更新时间:2023-10-30 19:47:26 25 4
gpt4 key购买 nike

我正在查询两个特定 unixtime 值之间的数据。例如:

1516338730(今天6:12)到1516358930(今天11:48)之间的所有数据

我的数据库每分钟收到一条新记录。现在,当我想查询最近 24 小时的数据时,它太密集了。每 10 分钟一次就完美了。

我现在的问题是:如何使用 DynamoDB 读取每 10 条数据库记录

据我所知,无法使用模数或类似的东西来满足我的需要。

到目前为止,这是我的 AWS Lambda 代码:

  var read = {
TableName: "user",
ProjectionExpression:"#time, #val",
KeyConditionExpression: "Id = :id and TIME between :time_1 and :time_2",
ExpressionAttributeNames:{
"#time": "TIME",
"#val": "user_data"
},
ExpressionAttributeValues: {
":id": event, // primary key
":time_1": 1516338730,
":time_2": 1516358930
},
ScanIndexForward: true
};
docClient.query(read, function(err, data) {
if(err) {
callback(err, null);
}
else {
callback(null, data.Items);
}
});
};

最佳答案

你说你每分钟插入1条记录?

以下可能是一个选项:

在插入的时候,在记录上设置另一个字段,我们称之为MinuteBucket,它被计算为时间戳的分钟值模10

如果您通过流函数执行此操作,则可以处理新记录,然后编写一些内容来触及旧记录以强制进行计算。

您的查询将更改为:

/*...snip...*/
KeyConditionExpression: "Id = :id and TIME between :time_1 and :time_2 and MinuteBucket = :bucket_id",
/*...snip...*/
ExpressionAttributeValues: {
":id": event, // primary key
":time_1": 1516338730,
":time_2": 1516358930,
":bucket_id": 0 //can be 0-9, if you want the first record to be closer to time_1, then set this to :time_1 minute value mod 10
},
/*...snip...*/

作为后续想法:如果您想加快查询速度,也许可以研究在索引中使用 MinuteBucket,尽管这可能会付出更高的代价。

关于javascript - 发电机 : Query only every 10th value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48339685/

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