SqlLinq.TimeSeries
2.1.0
There is a newer prerelease version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package SqlLinq.TimeSeries --version 2.1.0
NuGet\Install-Package SqlLinq.TimeSeries -Version 2.1.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SqlLinq.TimeSeries" Version="2.1.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SqlLinq.TimeSeries" Version="2.1.0" />
<PackageReference Include="SqlLinq.TimeSeries" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add SqlLinq.TimeSeries --version 2.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: SqlLinq.TimeSeries, 2.1.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package SqlLinq.TimeSeries@2.1.0
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=SqlLinq.TimeSeries&version=2.1.0
#tool nuget:?package=SqlLinq.TimeSeries&version=2.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Time series extension for SqlLinq
SqlLinq allows using ANSI style SQL SELECT statements over collections.
SqlLinq.TimeSeries extends basic SQL queries with time series clauses and aggregates.
dotnet add package SqlLinq.TimeSeries
Time series dialect extensions
GROUP BY,HAVING, andORDER BYaren't supported for time series data. UseFACETto group.
Clauses
SINCE,UNTILset the time window to query. A plain duration is a fixed time, andagocounts back from the newest item:SINCE 1 hour ago UNTIL 10 minutes ago.FACETgroups by a value and returns a row per group:FACET Station.LIMITkeeps the top facets, ranked by the first aggregate:FACET Station LIMIT 2.TIMESERIESsplits the window into buckets of a fixed size and returns a row per bucket, including empty ones:TIMESERIES 10 minutes.SESSIONsplits the items into sessions and returns a row per session. A session ends when the next item is further away than the gap, so each row is one burst of activity and quiet periods return nothing:SESSION 1 minute. It can't be combined withTIMESERIES.COMPARE WITHruns the query again over an earlier window and marks each rowcurrentorpreviousin aComparisoncolumn:SINCE 1 hour ago COMPARE WITH 1 hour ago.
Aggregates
medianis the middle value:median(WindSpeed).percentileis the value at a percent of the values:percentile(WindSpeed, 95).latest,earliestare the values of the newest and oldest items:latest(Temperature).ratescales an aggregate to a duration, for how often something happens:rate(count(*), 1 minute).derivativeis the slope of a line fitted through the values, for how fast a value changes:derivative(Pressure, 1 hour).
Examples
using SqlLinq.TimeSeries;
// Time series queries require a timespan selector for their source collection
var rows = readings.TimeSeriesQuery(
"""
SELECT average(Temperature), max(WindSpeed)
FROM readings
FACET Station
SINCE 1 hour ago
TIMESERIES 10 minutes
""",
r => r.Elapsed);
// Example rows, one per Station facet and 10 minute bucket
// { ["BeginTime"] = 01:00:00, ["EndTime"] = 01:10:00, ["Station"] = "South", ["average(Temperature)"] = 13.5, ["max(WindSpeed)"] = 37 }
// { ["BeginTime"] = 01:00:00, ["EndTime"] = 01:10:00, ["Station"] = "North", ["average(Temperature)"] = 9.5, ["max(WindSpeed)"] = 33 }
// { ["BeginTime"] = 01:10:00, ["EndTime"] = 01:20:00, ["Station"] = "South", ["average(Temperature)"] = 14.2, ["max(WindSpeed)"] = 35 }
// WHERE says what counts as a gust, and SESSION returns a row per gust:
// readings over 30 that are less than a minute apart are one gust
var gusts = readings.TimeSeriesQuery(
"""
SELECT max(WindSpeed)
FROM readings
WHERE WindSpeed > 30
SESSION 1 minute
""",
r => r.Elapsed);
// { ["BeginTime"] = 01:02:00, ["EndTime"] = 01:04:30, ["max(WindSpeed)"] = 37 }
// { ["BeginTime"] = 01:12:00, ["EndTime"] = 01:13:00, ["max(WindSpeed)"] = 35 }
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.2.0-rc2 | 53 | 11/12/2026 |
| 2.2.0-rc1 | 47 | 11/11/2026 |
| 2.1.0 | 50 | 11/11/2026 |
| 2.0.0 | 98 | 11/6/2026 |
| 2.0.0-rc.1 | 58 | 11/6/2026 |