Как стать автором
Обновить
0

Агрегация данных временных рядов

Время на прочтение 3 мин
Количество просмотров 6.2K


В этой статье мы открываем серию публикаций о конкретных задачах, решаемых в рамках внедрения AggreGate, которые, мы надеемся, смогут помочь вам в ваших реальных проектах.

Некоторое время назад к нашим партнёрам, занимающимся изготовлением и обслуживанием комплексных систем энергоснабжения базовых станций, обратился оператор сотовой связи в Африке. Проект был рассчитан на 1000-2000 базовых станций. В рамках этого проекта AggreGate использовался для мониторинга, управления, визуализации и построения отчётов. Входе эксплуатации системы потребовались отчёты, с помощью которых можно быстро посмотреть основные параметры оборудования. Эти отчёты в дальнейшем использовались для формирования KPI работы системы энергоснабжения, подбора оптимальных параметров, определения графика обслуживания и построения маршрута для команды инженеров.

Мы создали гибкий инструмент для AggreGate, позволяющий удобно формировать эту таблицу, используя как исторические данные, так и статистические данные. Функцию summary(). В данной статье мы рассмотрим, как получить таблицу данных по историческим значениям.

В нашем примере предлагаю использовать данные о температуре окружающей среды и температуре SOC используемой в сайтах для управления источниками энергии.

ШАГ 1: Выбираем, какие поля переменной нам понадобятся.
Удобнее всего изучить снимок устройства и определить, какие именя у интересующих нас полей.


ШАГ 2: Пишем выражение для получения данных и разбираемся в параметрах функции.


Для вызова функции summary(), находящейся в контексте utilities мы воспользовались функцией callFunction(), позволяющей вызвать функцию любого контекста и передать параметры для этой функции:

subtable(callFunction(«utilities», «summary», «systemCPUTemperature», «System CPU Temperature», date(2015, 05, 10, 0, 0 ,0), date(2015, 05, 19, 0, 0 ,0), «users.d3.devices.TH3DGM», «device_data», 1, "{system_cpu_temperature}", null, 4, 2, 0, 0, null, null, null, true, false, 0), «periodName», «context», «systemCPUTemperature»)

Где:
1) «systemCPUTemperature» ID поля в результирующей таблице (без пробелов).
2) «System CPU Temperature» Описание поля в результирующей таблице.
3) date(2015, 05, 10, 0, 0 ,0) Начальная дата
4) date(2015, 05, 19, 0, 0 ,0) Конечная дата
5) «users.d3.devices.TH3DGM» Путь к контексту устройства или маска.
6) «device_data» ID переменной, по которой будет работать функция.
7) 1 Тип данных, в нашем случае — переменная, также возможно работать с событиями.
8) "{system_cpu_temperature}" Выражение для вычисления значения поля в результирующей таблице. В нашем случае это значение поля system_cpu_temperature
9) null Выражение для вычисления даты. (По умолчанию берётся штамп времени из базы данных, если нужно использовать другую дату, то здесь можно написать выражение, чтобы датой считалось поле той же переменной)
10) 4 Период аггрегации данных.
11) 2 Тип аггрегации (max в нашем примере)
12) 0 Тип изменений значений (у нас сырые данные)
13) 0 Нормализация данных (мы игнорируем такие данные в нашем примере)
14) null Минимальное допустимое значение для входных данных серии
15) null Максимальное допустимое значение для входных данных серии
16) null Временная зона исходных данных (мы используем временную зону сервера)
17) true Показывать ли результат по каждому периоду аггрегации.
18) false Показывать ли итоговый результат за весь выбранный период исходных данных.
19) 0 Сортировка по времени или по устройствам (мы используем по времени)

Получаем следующую таблицу:


ШАГ3: Убираем лишние поля и наслаждаемся результатом.

Используем функцию subtable(), первым параметром мы подаём нашу таблицу, а дальше перечисляем, какие поля мы хотим оставить.



В следующей публикации мы рассмотрим, как с помощью встроенных средств AggreGate работать с событиями и как параметеризовать ваши запросы и отчёты, чтобы сделать их более гибкими и универсальными.
Мы будем рады любым предложениям о том, что описать в следующих статьях и вашему личному опыту, решения конкретных задач.
Теги:
Хабы:
+6
Комментарии 0
Комментарии Комментировать

Публикации

Информация

Сайт
tibbo.com
Дата регистрации
Дата основания
Численность
101–200 человек
Местоположение
Россия

Истории