我已经看到在特定日期从流分析作业向 cosmos DB 写入大量数据。它不应该在一天内写出大量的文件。我必须检查那一天是否有重复的文件。
是否有任何查询/任何方法可以找出 cosmos DB 中的重复记录?
我已经看到在特定日期从流分析作业向 cosmos DB 写入大量数据。它不应该在一天内写出大量的文件。我必须检查那一天是否有重复的文件。
是否有任何查询/任何方法可以找出 cosmos DB 中的重复记录?
如果您知道检查重复项的属性,则有可能。我们遇到了一个令人讨厌的生产问题,也导致了许多重复记录。在联系 MS Support 帮助我们识别重复文件后,他们向我们提出了以下查询;
请记住:在我们的案例中,属性A和B 共同定义了唯一性。因此,如果两个文档对于 A 和 B 具有相同的值,则它们是重复的。然后,您可以使用此查询的输出,例如,删除最旧的但保留最新的(基于 _ts)
SELECT d.A, d.B From
(SELECT c.A, c.B, count(c._ts) as counts FROM c
GROUP BY c.Discriminator, c.EndDateTime) AS d
WHERE d.counts > 1
是否有任何查询/任何方法可以找出 cosmos DB 中的重复记录?
快速回答是YES 。请在cosmos db查询sql中使用distinct
关键字_ts
。并过滤(系统生成的unix时间戳:https ://docs.microsoft.com/en-us/azure/cosmos-db/databases-containers-items#项目的属性)
就像是:
Select distinct c.X,c.Y,C.Z....(all columns you want to check) from c where c._ts = particular day
然后,您可以使用此批量删除库删除重复数据:https ://github.com/Azure/azure-cosmosdb-bulkexecutor-dotnet-getting-started/tree/master/BulkDeleteSample 。