Comments 6
UI выглядит навороченно, мой намётанный глаз узнал FlatLaF. Вашу Dimension DB вечером гляну. А зачем Berkley DB java edition?
Правильно ли я понимаю: факторный анализ и анализ главных компонент так же есть в этой программе? Есть ли возможность работать с пространственными данными? Чем ваше ПО лучше и удобнее например Statistica или Past, кроме анализа в реальном времени (это очень круто). Какие методы кластеризации есть в программе и можно ли их настраивать? Есть ли возможность составления прогнозов? Встроенно ли быстрое разложение Фурье?
Хороший вопрос на самом деле. Ответ потянет на полноценную статью :)
Факторный анализ, анализ главных компонент и быстрое разложение Фурье не используется. И для работы с пространственными данными тоже нет функционала, и кластеризации тоже.
Есть другие реализации методов для решения задач анализа временных рядов (поиск аномалий, Motif discovery и прогнозирования): Matrix profile и ARIMA. Особое внимание уделяется визуализации данных, интерактивной работе с измерениями, поиску корреляций в данных, которые в общем-то закрывают значительную часть потребности в анализе данных временных рядов. Прогнозирование временных рядов - это только одна из задач time series analysis.
Фокус на простоте - в свое время, еще до начала проекта у меня почему-то было ощущение (не знание), что должен быть простой метод работы с данными временных рядов, например задача поиска аномалий. И когда я познакомился с Matrix profile - я внутренне возликовал - есть, он есть! Статистика цитирований и The Matrix Profile is now an official primitive in the Matlab Language говорят о многом. Значит можно решать такие задачи просто и понятно: Все значимые всплески в верхней части графика – это аномалии в данных, тоже самое но в нижней части – повторяющиеся значения. И всего один параметр.
Если по простому смотреть на это приложение - это способ работы со сложностью в анализе данных временных рядов. Мы берем и разбиваем сложную многомерную модель какой-либо предметной области на некоторое множество простых сущностей - измерений и смотрим на каждое в отдельности и в их взаимосвязи с другими. Почему так? Мы не можем воспринимать более чем два измерения (3D - это наше восприятие двумерности). И все попытки (они были) делать визуализацию более чем в 2 измерениях, в общем не имели успеха. Ибо это сложно для человека воспринимать множество измерений одноверменно, это когнитивная нагрузка.
Чем лучше Statistica или Past? Это немного другой взгляд на проблему работы с данными временных рядов. Основные принципы были во введении. Ну и решать будет практика - можно ли с помощью приложения получать результат или нет, насколько удобно работать в программе - для этого можно для начала посмотреть визуализации, скринкасты. И даже в текущем виде не все сделано оптимально - особенно развернуто про это написано в разделе Рефакторинг. И вполне возможно может не подойти под ваши задачи - такое тоже бывает.
Интересный проект. Поддерживается ли написание плагина под свой источник данных? И не помешал бы туториал, как настроить ее для извлечения данных, можно на примере еще существующего пресета, как сделать его с нуля и сохранить для повторного использования. А также общее описание, откуда вообще утилита может брать данные и что с ними делать. Быть может где-то это в глубине все и написано, но беглое ознакомление с документацией не дало особого понимания
Благодарю, до плагинов еще не добрались. Можно посмотреть в документации, есть соответствующий раздел в README на английском и русском.
Сбор данных в основном JDBC источников и по HTTP (поддерживаются любые системы которые отдают метрики в формате Prometheus). На данный момент поддерживаемые СУБД: Postgres, Oracle, Microsoft SQL Server и ClickHouse. Можно напрямую ходить в СУБД через подключения и смотреть данные временных рядов по таблицам или представлениям (интерфейс Ad-Hoc).
В настройках по запросу выбираем один из вариантов:
BY_CLIENT_JDBC
BY_SERVER_JDBC
BY_CLIENT_HTTP
BY_CLIENT_JDBC, когда мы загружаем данные напрямую из удаленной системы в локальную БД;
BY_SERVER_JDBC, когда данные заполняются отдельным процессом на сервере и мы только подгружаем их локально. Метка времени указывается в настройках запроса и отслеживаются последние изменения;
BY_CLIENT_HTTP, когда мы загружаем метрики Prometheus напрямую из удаленной системы в локальную БД;
На постгресе можно по такому запросу тестовые данные пособирать и посмотреть как все работает. Указываем режим BY_CLIENT_JDBC.
SELECT current_timestamp as dt
,MIN(CASE WHEN rn = 7 THEN floor(random()*(10-1+1))+1 END) as value_histogram
,MIN(CASE WHEN rn = 7 THEN floor(random()*(10-1+1))+1 END) as value_enum
,MIN(CASE WHEN rn = 7 THEN floor(random()*(10-1+1))+1 END) as value_raw
FROM generate_series(1,50) id -- number of rows
,LATERAL( SELECT nr, ROW_NUMBER() OVER (ORDER BY id * random())
FROM generate_series(1,900) nr
) sub(nr, rn)
GROUP BY id
Можно также загрузить сохраненные запросы для просмотра истории активных сессий по поддерживаемым БД, они есть в Templates, создать профиль и смотреть активность.
На постгрес можно включить синтетическую нагрузку через pgbench:
pgbench -c 10 -j 2 -t 10000000 postgres
Многомерный анализ данных временных рядов