Текущая настройка:
Я использую контейнер TimeSeries в GridDB. со следующей схемой:
метка времени (TIMESTAMP)
значение (DOUBLE)
Вот код Python, который я использую для создания и заполнения контейнера:
Код: Выделить всё
import griddb_python as griddb
factory = griddb.StoreFactory.get_instance()
gridstore = factory.get_store(
notification_member="127.0.0.1:10001",
cluster_name="defaultCluster",
username="admin",
password="admin"
)
container_info = griddb.ContainerInfo(
"time_series_data",
[
["timestamp", griddb.Type.TIMESTAMP],
["value", griddb.Type.DOUBLE]
],
griddb.ContainerType.TIME_SERIES,
True
)
container = gridstore.put_container(container_info)
# Insert sample data with irregular intervals and potential outliers
container.put([
("2024-01-01T00:00:00.000Z", 10.0),
("2024-01-01T01:00:00.000Z", 100.0), # Potential outlier
("2024-01-01T02:00:00.000Z", 20.0)
])
Мне необходимо:
- Обнаружить выбросы на основе по пороговому значению или статистическому методу (например, z-показатель, IQR).
- Замените эти выбросы интерполированными значениями (например, средним значением соседних точек) или заполнителем по умолчанию.
- Есть ли в GridDB встроенная поддержка обнаружения и замены выбросов в данных временных рядов во время выполнения запроса?
- Если нет, то какой способ добиться этого с помощью GridDB и Python будет наиболее эффективным?
Что я пробовал:
- Обработка после запроса: I получили данные с помощью следующего запроса и применили обнаружение выбросов в Python:
TIMESTAMP('2024-01-01T00:00:00.000Z')
Однако этот подход требует больших вычислительных затрат для больших наборы данных.
- Предварительная обработка: я рассматривал возможность предварительной обработки данных для обработки выбросов перед их сохранением в GridDB, но это неоправданно увеличивает требования к хранению.
Например, выброс 2024-01-01T01:00:00.000Z (значение 100.0) следует заменить средним значением соседних точек:
Код: Выделить всё
- Interpolated Value = (10.0 + 20.0) / 2 = 15.0
Подробнее здесь: https://stackoverflow.com/questions/793 ... time-serie