【问题标题】:Alternative to group by for cosmos db替代 cosmos db 的 group by
【发布时间】:2019-11-05 12:42:05
【问题描述】:

鉴于 cosmos db 不支持 group by,有什么好的替代方法来实现类似功能:

Select sum(*) , groupterm from tble group by groupterm

我可以在 cosmos 存储过程中有效地实现这一点吗?

【问题讨论】:

    标签: azure-cosmosdb


    【解决方案1】:

    正如Cosmos_DB 所述:

    SQL 中的聚合功能仅限于 COUNT、SUM、MIN、MAX、AVG 函数。不支持 GROUP BY 或数据库系统中的其他聚合功能。但是,存储过程可用于实现数据库内聚合功能。

    我可以在 cosmos 存储过程中有效地实现这一点吗?

    适用于 .NET 和 Node.js

    Larry Maccherone 提供了一个很棒的包 documentdb-lumenize,它支持聚合(分组、数据透视表和 N 维立方体)和时间序列转换作为 DocumentDB 中的存储过程。

    另外,对于 Python 和 Scala,您可以参考azure-cosmosdb-spark

    【讨论】:

    • 可以从任何客户端库调用 Lumenize 存储过程。我只包括如何从 node.js 和 .NET 中执行此操作的示例,但 Python、Java 等都可以使用它。
    • 这看起来不错,谢谢,我会试一试。查看文档,它只显示了按单个字段分组的示例,这是正确的,还是我可以在配置中的组术语中添加多个字段?
    • 同样,如果我想对文档的多个属性求和,这可能吗?
    • AFAIK,您只能将groupByfield 配置为单个字段。
    【解决方案2】:

    现在 Cosmos db SQL API 支持分组依据。您将需要 SDK 3.3 或更高版本

    Azure Cosmos DB 当前支持 .NET SDK 3.3 或更高版本中的 GROUP BY。 目前不支持其他语言 SDK 和 Azure 门户 可用,但已在计划中。

    https://docs.microsoft.com/en-gb/azure/cosmos-db/sql-query-group-by

    【讨论】:

      【解决方案3】:

      最后,Azure Cosmos DB 目前支持GROUP BY in .NET SDK 3.3 或更高版本。对其他语言 SDK 和 Azure 门户的支持目前不可用,但已在计划中。

      <group_by_clause> ::= GROUP BY <scalar_expression_list>
      
      <scalar_expression_list> ::=
                <scalar_expression>
              | <scalar_expression_list>, <scalar_expression>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-08-24
        • 1970-01-01
        • 2020-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多