如何编写 Azure Cosmos COUNT DISTINCT 查询

问题描述 投票:0回答:1

目标

返回 Cosmos 集合分区内特定文档字段的不同值的计数。

步骤

如果我在 Azure Cosmos 数据库上运行以下查询,

SELECT DISTINCT c.field
FROM c
WHERE c.field = 'abc' AND c.partitionKeyField = '123'

我按预期得到一行,例如以下回复

[
    {
        "field": "abc"
    }
]

但是,如果我随后运行以下查询,尝试通过以下查询来计算响应中不同文档的数量

SELECT VALUE COUNT(1)
FROM (
    SELECT DISTINCT c.field
    FROM c
    WHERE c.field = 'abc' AND c.partitionKeyField = '123'
)

它回来了

[
    6
]

这是

c.field
设置为
"abc"
的文档总数,而不是
c.field
的不同值的数量。

问题

请您帮助我理解为什么查询返回

c.field
的文档数量而不是不同值的数量,以及是否有一个查询将返回
c.field
的不同值的数量,即 1?

编辑 - PS。我知道这是一个人为的示例,因为根据定义,

c.field
的唯一值的数量始终为 1 - 我故意从实际情况简化了这一点。

azure azure-cosmosdb distinct azure-cosmosdb-sqlapi
1个回答
4
投票

在撰写本文时(2021 年 1 月 22 日),此查询提供了正确数量的不同值:

SELECT COUNT(UniqueFields) AS UniqueCount
FROM (SELECT DISTINCT c.field
    FROM c
    WHERE c.field = 'abc' AND c.partitionKeyField = '123') as UniqueFields
© www.soinside.com 2019 - 2024. All rights reserved.