Пользовательские запросы даты с использованием Cumulocity API

Можно ли агрегировать измерения или создавать собственные запросы помимо стандартных dateFrom dateTo запросов?

Например, у меня есть измерения с разницей во времени в 1 минуту (2015-01-01T05:05:00, 2015-01-01T05:05:00, 2015-01-01T05:05:00, ...) и я хотел бы запросить измерения с 15-минутными интервалами (2015-01-01T05:15:00, 2015-01-01T05:30:00, 2015-01-01T05:45:00, ...)

Пока я придумал только эти решения:

  1. Использование стандартного запроса API, как в https://tenant.cumulocity.com/measurement/measurements?dateFrom=2015-10-01&dateTo=2015-11-05, а затем отбрасывание большей части данных потребует огромного количества времени для загрузки данных.
  2. Использование cep (язык событий скопления) для генерации нового измерения каждые 15 минут с использованием ближайшего 1-минутного измерения кажется немного излишним и не очень элегантным.
  3. Пакетный запрос точной минуты https://tenant.cumulocity.com/measurement/measurements?dateFrom=2015-11-05T05:15:00%2B01:00&dateTo=2015-11-05T05:16:00%2B01:00, что приведет к огромному количеству запросов API, а также не кажется очень эффективным.
  4. Используйте конечную точку /measurements/series, которая даст мне только все серии, даже те, которые мне не нужны, а также возможность агрегирования только ежечасно и ежедневно (насколько я могу судить).

Есть ли лучший способ сделать это?


person Davis Kirkendall    schedule 05.11.2015    source источник


Ответы (2)


вы овладели почти всеми доступными в настоящее время механизмами. Есть еще одна возможность - не уверен, что это вариант для вас:

  1. Отметьте пятнадцатое измерение при отправке его с устройства, используя, например, другой тип.

Обычно я бы использовал 2. На самом деле это довольно эффективно, похоже на материализованное представление в традиционном SQL, плюс вы можете использовать данные везде и во всех виджетах.

Удачи :-)

Привет, Андре

person André    schedule 05.11.2015

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

Вместо того, чтобы копировать измерение, вы можете просто добавлять специальный фрагмент к измерению каждые 15 минут в правиле CEP. Вы не можете обновлять измерения, поэтому вам придется удалять измерения, поступающие каждые 15 минут, а затем создавать новые измерения с точно такими же значениями, но добавлять фрагменты (например, "aggregatedMeasurement": {}).

Ваш запрос будет выглядеть следующим образом: https://tenant.cumulocity.com/measurement/measurements?dateFrom=2015-10-01&dateTo=2015-11-05&fragmentType=aggregatedMeasurement

Еще одна идея для пункта 3:

Вы можете использовать SmartREST для создания шаблона со строкой запроса и оставить dateFrom и dateTo в качестве заполнителей. Тогда со стороны клиента вам нужно будет сделать только один запрос, используя функцию массовой загрузки в SmartREST. На стороне сервера это все равно будет преобразовано в отдельные запросы, поэтому вы ничего не выиграете в скорости.

person TyrManuZ    schedule 05.11.2015