# 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
```pascal
// NO_COMPILE
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);
```
## Extracting Data
You can extract data from a sequence into standard arrays for processing or visualization.
```pascal
// NO_COMPILE
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');
```
:::info
### Extraction Options
The `ExtractSamples` method supports options like `tseoIgnoreNulls` to filter out gaps in the data where no samples were recorded.
:::
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);
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 :arrayofInteger;var values :arrayofFloat;// Extract samples from time 0 to 20
ts.ExtractSamples('temp',0,20, times, values,[tseoIgnoreNulls]);
PrintLn('Found '+ times.Length.ToString +' samples');
Extraction Options
The ExtractSamples method supports options like tseoIgnoreNulls to filter out gaps in the data where no samples were recorded.