Azure cosmosdb Azure CosmosDB:获取上个月&x27;按天统计文件
我正在将Azure CosmosDB与SQL api一起使用,并且我正在尝试在我的前端创建一个图表,该图表表示一个月内每个特定日期上载的所有文档。该图表最多应为一个月。下面我附上了一个模拟我想法的截图。在评论中经过一些讨论后,我也将添加数据模式 数据消息的示例(分区键为/message/deviceId) 现在我的问题是:获取此类数据的最佳方式是什么?我通常会选择更简单快捷的函数,但我认为这种方法不会真正起作用,因为我需要获取上个月几乎所有的数据,才能获得上传的次数;这样做也需要花费大量的时间和金钱 有没有其他收集此类数据的方法?你们能推荐另一种方法吗?如果是,哪一个?我不想再添加任何服务,因为我已经在一个相对较大的项目上工作,并且我正在熟悉所有这些服务 编辑:创建某种文档来保存当前月份的所有信息(如天数数组)是不是一个坏主意?因此,查询将只针对不在数组中的天数运行Azure cosmosdb Azure CosmosDB:获取上个月&x27;按天统计文件,azure-cosmosdb,Azure Cosmosdb,我正在将Azure CosmosDB与SQL api一起使用,并且我正在尝试在我的前端创建一个图表,该图表表示一个月内每个特定日期上载的所有文档。该图表最多应为一个月。下面我附上了一个模拟我想法的截图。在评论中经过一些讨论后,我也将添加数据模式 数据消息的示例(分区键为/message/deviceId) 现在我的问题是:获取此类数据的最佳方式是什么?我通常会选择更简单快捷的函数,但我认为这种方法不会真正起作用,因为我需要获取上个月几乎所有的数据,才能获得上传的次数;这样做也需要花费大量的时间
非常感谢您的帮助 我是CosmosDB工程团队的。从您的问题中,我了解到您需要统计上个月每天更新的文档数 您可以通过两种方式完成此操作:
为什么不为此添加一个javascript存储过程?它们使用更少的RU,并保证快速response@monstertjie_za-存储过程有何帮助?它们的作用域是单个分区,所以解决方案只能处理单个分区集合。另外,为什么存储过程使用更少的RU?它仍然必须在存储过程中执行查询。这可能会节省往返带宽。如果没有关于数据模型的任何详细信息,很难给出任何答案。至于“获取所有数据”——同样,如果不查看数据模型,就不可能知道这是否必要,而不是利用聚合函数,如
SUM()
和COUNT()
。至于您将摘要数据存储在单个文档中的想法,这可能会奏效,但您需要保证对上载的每个新文档执行所有更新逻辑。@DavidMakogon您将什么分类为数据模型?我可以告诉你,我的数据是简单的JSON,都存储在同一个数据库、同一个集合和明显相同的分区中,它们报告一个时间戳
、一个设备ID
和一个值(将其视为一个温度)。这些都是非常简单的数据结构,我只是想知道是否有更简单的方法来获取每天的COUNT()
,而不必创建自定义函数。顺便说一句,我可以保证更新逻辑在100%的情况下都能正常工作,因为我会将它放在从IoTHub获取数据到CosmosDB的函数中。@Eugenio-我建议编辑您的问题,以显示示例文档、示例摘要输出以及您尝试的内容。还请注意:并非所有数据都在同一个分区中,即使您在注释中提到了属性也是如此;您尚未共享分区密钥。这是否意味着您正在使用固定分区集合?非常感谢,非常精确和直接,非常感谢。我可能会使用第一个选项,因为现在我们的工作量很小,但如果我们将来扩展,我会关注它,再次感谢@Krishnan在变更提要中有没有任何方法来识别文档是否被更新或创建?
{
"message": {
"deviceId": "device01",
"timestamp": "2018-07-25T08:47:16,094",
"payload": "6c,65,33",
},
"id": "ff670801-de08-422c-be0a-fa67e6324bb8",
"_rid": "75klAPTTTHADAAAAAAAAAA==",
"_self": "dbs/75klAA==/colls/75klAPTTTHA=/docs/75klAPTTTHADAAAAAAAAAA==/",
"_etag": "\"0000bc1d-0000-0000-0000-5c112e5a0000\"",
"_attachments": "attachments/",
"_ts": 1544629850
}