Ошибка слишком много событий при удалении небольшого количества событий Keen IO

Сегодня утром у нас возникла проблема, которая создала дубликаты событий в Kee (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 событий... немного нервничал по поводу переключения на удаление.

Я хотел бы очистить эти события, но хочу убедиться, что я не собираюсь удалять события, которые я хочу сохранить….

В моем фильтре для извлечения и (скоро будет выполнено) удаления есть массив активных идентификаторов (keen.id), которые я хотел бы удалить. Однако на таймфрейме есть еще много событий, которые не соответствуют фильтру.

Что меня напугало, так это то, что изначально я запустил удаление за последние 2 дня (или неделю) в качестве временного интервала, и он вернул ответ с ошибкой, потому что в этом временном интервале было более 100 000 событий.

Если я сужаю временной интервал, я хочу убедиться, что он удалит только список идентификаторов в моем фильтре, а не все события во временном интервале.


person Michelle Wetzler    schedule 26.07.2017    source источник


Ответы (1)


Две вещи, которые нужно проверить:

  1. Убедитесь, что вы передаете свои фильтры и временные рамки в качестве параметров запроса, а не в теле контента. Распространенная проблема с запросами DELETE заключается в том, что в то время как другие запросы API, такие как запросы и извлечения позволяют помещать параметры запроса в текст запроса, API DELETE полностью игнорирует тело содержимого. Это может привести к тому, что DELETE API интерпретирует ваш запрос как запрос на удаление всей коллекции.

  2. Проверьте синтаксис вашего фильтра. Второй «подводный камень» заключается в том, что если вы ошибетесь в синтаксисе или кодировке своих фильтров, это также может привести к их полному игнорированию, что опять же 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

Лучше всего проверить синтаксис фильтра и таймфрейма, изменив этот запрос на запрос подсчета. . Убедитесь, что количество соответствует ожидаемому (например, отфильтруйте 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

После успешного завершения подсчета и извлечения с вашим конкретным фильтром и набором временных рамок вы можете приступить к выполнению запроса на удаление.

person Michelle Wetzler    schedule 26.07.2017