我们今天早上遇到了一个问题,它在敏锐的情况下创建了重复的事件(其中有496个)并且正在尝试删除它们。我有一个提取查询,只返回那些事件。如果我在本周的时间段内运行它,则删除会返回错误:
{"message": "There are too many events to perform this operation. You cannot delete a collection that has over 1000000 events. Your collection currently has 4834812 events.", "error_code": "TooManyEventsError”}
我缩短了过去12小时的时间范围并获得了预期的496个事件....对于将其切换为删除有点紧张。
我想清理这些事件,但想确保我不会删除我想保留的事件......
我的提取过滤器和(即将执行)删除有一系列我想要删除的敏锐ID(keen.id)。但是,时间范围内还有许多事件与过滤器不匹配。
让我感到害怕的是,最初我在过去2天(或一周)内将删除作为时间范围运行并返回错误响应,因为时间范围内有超过100,000个事件。
如果我缩小时间范围,我想确保它只删除我的过滤器中的ID列表,而不是删除时间范围内的所有事件。
答案 0 :(得分:0)
要检查两件事:
确保将过滤器和时间范围作为查询参数传递,而不是在内容正文中。常见的"陷阱"使用DELETE请求的是,当查询和提取等其他API请求允许您将查询参数放入请求的内容正文中时,DELETE API会完全忽略内容正文。这可能导致DELETE API将您的请求解释为删除整个集合的请求。
检查您的过滤器语法。第二个"陷阱"如果您在过滤器上删除了语法或编码,它也会导致它们被完全忽略,这也可以将API解释为删除整个集合的请求。
实际上,如果您尝试删除集合而不是事件的子集,则会出现此错误。因此,上述两件事之一可能是罪魁祸首。
这是删除语法应该是什么:
https://api.keen.io/3.0/projects/PROJECT_ID/events/COLLECTION_NAME?api_key=MASTER_KEY&filters=YOUR_FILTERS_HERE&timeframe=this_7_days
最佳做法是测试您的过滤器和放大器。将此请求更改为count request的时间范围语法。确保计数符合您的预期(例如,过滤1个事件并确保计数为1)。计数请求语法为:
https://api.keen.io/3.0/projects/PROJECT_ID/queries/count?api_key=READ_KEY&event_collection=COLLECTION_NAME
最后,由于删除是不可逆转的,我建议运行一个提取,以便您拥有已删除事件的额外副本。这样,如果你不小心删除了错误的东西,你可以重新加载它们。提取语法如下所示:
https://api.keen.io/3.0/projects/PROJECT_ID/queries/extraction?api_key=READ_KEY&event_collection=COLLECTION_NAME&timeframe=this_7_days
在使用您设置的特定过滤器和时间框成功完成计数和提取后,您可以继续运行删除请求。