我已经看到在特定的一天,有大量的数据从流分析作业写入cosmos DB。 不应每天写大量文档。我必须检查当天是否有文件重复。
是否有任何查询/以任何方式在cosmos DB中找出重复记录?
答案 0 :(得分:5)
如果您知道属性以检查重复项,则有可能。 我们遇到了一个令人讨厌的生产问题,导致许多重复的记录。 与MS支持人员联系以帮助我们识别重复的文档后,他们给了我们以下查询;
请紧记:属性 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
答案 1 :(得分:0)
是否有任何查询/以任何方式在cosmos DB中找出重复记录?
快速回答是。请在cosmos db查询sql中使用distinct
keyword。然后过滤_ts
(系统生成的unix时间戳:https://docs.microsoft.com/en-us/azure/cosmos-db/databases-containers-items#properties-of-an-item)
类似的东西:
Select distinct c.X,c.Y,C.Z....(all columns you want to check) from c where c._ts = particular day
然后,您可以使用以下批量删除lib:https://github.com/Azure/azure-cosmosdb-bulkexecutor-dotnet-getting-started/tree/master/BulkDeleteSample删除重复数据。