Azure cosmosdb Azure CosmosDB:获取上个月&x27;按天统计文件

Azure cosmosdb Azure CosmosDB:获取上个月&x27;按天统计文件,azure-cosmosdb,Azure Cosmosdb,我正在将Azure CosmosDB与SQL api一起使用,并且我正在尝试在我的前端创建一个图表,该图表表示一个月内每个特定日期上载的所有文档。该图表最多应为一个月。下面我附上了一个模拟我想法的截图。在评论中经过一些讨论后,我也将添加数据模式 数据消息的示例(分区键为/message/deviceId) 现在我的问题是:获取此类数据的最佳方式是什么?我通常会选择更简单快捷的函数,但我认为这种方法不会真正起作用,因为我需要获取上个月几乎所有的数据,才能获得上传的次数;这样做也需要花费大量的时间

我正在将Azure CosmosDB与SQL api一起使用,并且我正在尝试在我的前端创建一个图表,该图表表示一个月内每个特定日期上载的所有文档。该图表最多应为一个月。下面我附上了一个模拟我想法的截图。在评论中经过一些讨论后,我也将添加数据模式

数据消息的示例(分区键为/message/deviceId)

现在我的问题是:获取此类数据的最佳方式是什么?我通常会选择更简单快捷的函数,但我认为这种方法不会真正起作用,因为我需要获取上个月几乎所有的数据,才能获得上传的次数;这样做也需要花费大量的时间和金钱

有没有其他收集此类数据的方法?你们能推荐另一种方法吗?如果是,哪一个?我不想再添加任何服务,因为我已经在一个相对较大的项目上工作,并且我正在熟悉所有这些服务

编辑:创建某种文档来保存当前月份的所有信息(如天数数组)是不是一个坏主意?因此,查询将只针对不在数组中的天数运行


非常感谢您的帮助

我是CosmosDB工程团队的。从您的问题中,我了解到您需要统计上个月每天更新的文档数

您可以通过两种方式完成此操作:

  • 针对您感兴趣的日期发出带有过滤器的COUNT()查询。这是目前的次优-我们正在致力于更有效地服务聚合,以及按支持分组,但我们还没有这些功能的固定日期。如果文档的数量足够少,并且您的集合没有繁重的工作负载,那么您仍然可以使用此选项
  • 您可以从源集合中设置一个变更提要管道,捕获所有变更,并使用提要中的变更更新一个单独的元数据文档,该文档指示每天的更新次数。以下是使用change feed处理器的链接:

  • 为什么不为此添加一个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
    }