Текущая настройка
Я использую контейнер TimeSeries в GridDB с эта схема:
- метка времени (TIMESTAMP)
- значение > (ДВОЙНОЙ)
Код: Выделить всё
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 potential outliers
container.put([
("2024-01-01T00:00:00.000Z", 10.0),
("2024-01-01T01:00:00.000Z", 100.0), # Possible outlier
("2024-01-01T02:00:00.000Z", 20.0)
])
Я хочу:
- Обнаружить выбросы в значение, используя статистический метод (например, z-показатель, IQR).
- Замените эти выбросы интерполированными значениями на основе соседних точек во время извлечения.
- < li>Интерполированное значение = (10,0 + 20,0) / 2 = 15,0
- Поддерживает ли GridDB обнаружение и замену выбросов во время выполнения запроса?
- Если нет, то каков наиболее эффективный способ добиться этого с помощью GridDB и Python, учитывая большие наборы данных?
- < strong>Обработка после запроса:
Я получил данные и использовал Python для обнаружения и интерполяции выбросов. Однако этот подход требует больших вычислительных затрат для больших наборов данных. - Предварительная обработка:
Я рассматривал возможность обработки выбросов перед сохранением данных в GridDB, но это увеличивает требования к хранилищу и делает набор данных менее динамичным.
В настоящее время я запрашиваю такие данные, как это:
Код: Выделить всё
SELECT * FROM time_series_data WHERE timestamp >= TIMESTAMP('2024-01-01T00:00:00.000Z')
Любая информация, примеры или рекомендации по обработке это эффективно было бы очень признательно!
Подробнее здесь: https://stackoverflow.com/questions/793 ... eries-data