【发布时间】:2017-12-18 23:28:58
【问题描述】:
我最近开始在我们的项目中使用 Azure Cosmos DB。出于报告目的,我们需要获取集合中的所有分区键。我找不到任何合适的 API 来实现它。
【问题讨论】:
标签: azure azure-cosmosdb
我最近开始在我们的项目中使用 Azure Cosmos DB。出于报告目的,我们需要获取集合中的所有分区键。我找不到任何合适的 API 来实现它。
【问题讨论】:
标签: azure azure-cosmosdb
更新:根据下面 cmets 中的 Brian 所说,现在支持 DISTINCT。尝试类似:
SELECT DISTINCT c.partitionKey FROM c
获取实际分区键值的唯一方法是对该字段进行唯一聚合。但是,有一种相对简单的方法可以获取分区键范围。据我所知,任何 SDK 都不直接支持它,但您可以直接点击https://{your endpoint domain}.documents.azure.com/dbs/{your collection's uri fragment}/pkranges 的 REST 端点来拉回每个分区的分区键范围。请注意,下边是包容性的,因此您可以使用它来进行自己的扇出。
警告:在您检索它们的时间和您对它们做某事的时间之间,pkrange 可能会发生变化的可能性很小。要么接受这种微不足道的风险,要么围绕它编写代码。
【讨论】:
FeedOption 上设置范围 ID)。它并没有真正让你更接近潜在的价值。尽管如此,.NET SDK 确实允许您通过 ReadPartitionKeyRangeFeedAsync 查询范围。
SELECT DISTINCT c.partitionKey FROM c 的问题在于它是一个昂贵的查询(321 RU 在一个非常小的有 6 个分区的数据库中)
此功能目前不可用。不过有一个反馈项here
【讨论】: