Time Series

The System.Data.TimeSeries unit provides a high-performance engine for storing and querying time-indexed numerical data. It is optimized for scenarios like sensor logging, financial data, or performance monitoring.

Core Concepts

  • Sequence: A named stream of data points.
  • Sample: A single data point consisting of a time (Integer) and a value (Float).

Basic Usage

uses System.Data.TimeSeries;

var ts := TimeSeries.Create;

// Add a sequence with a 3-second resolution
ts.AddSequence('cpu_load', 3);

// Store some samples
ts.StoreSample('cpu_load', 1, 10.5);
ts.StoreSample('cpu_load', 4, 15.0);
ts.StoreSample('cpu_load', 7, 12.2);

PrintLn('Stored samples: ' + ts.SequenceCount.ToString);
Result
Stored samples: 1

Extracting Data

You can extract data from a sequence into standard arrays for processing or visualization.

uses System.Data.TimeSeries;
var ts := TimeSeries.Create;
ts.AddSequence('temp', 1);
ts.StoreSample('temp', 10, 22.5);
ts.StoreSample('temp', 11, 23.0);

var times : array of Integer;
var values : array of Float;

// Extract samples from time 0 to 20
ts.ExtractSamples('temp', 0, 20, times, values, [tseoIgnoreNulls]);

PrintLn('Found ' + times.Length.ToString + ' samples');
Result
Found 2 samples

Extraction Options

The ExtractSamples method supports options like tseoIgnoreNulls to filter out gaps in the data where no samples were recorded.

On this page