3

我已经看到在特定日期从流分析作业向 cosmos DB 写入大量数据。它不应该在一天内写出大量的文件。我必须检查那一天是否有重复的文件。

是否有任何查询/任何方法可以找出 cosmos DB 中的重复记录?

4

2 回答 2

8

如果您知道检查重复项的属性,则有可能。我们遇到了一个令人讨厌的生产问题,也导致了许多重复记录。在联系 MS Support 帮助我们识别重复文件后,他们向我们提出了以下查询;

请记住:在我们的案例中,属性AB 共同定义了唯一性。因此,如果两个文档对于 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
于 2020-04-09T08:08:37.917 回答
0

是否有任何查询/任何方法可以找出 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 。

于 2019-12-09T01:18:12.877 回答