SqlLinq.TimeSeries 2.1.0

There is a newer prerelease version of this package available.
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" />
                    
Directory.Packages.props
<PackageReference Include="SqlLinq.TimeSeries" />
                    
Project file
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
                    
#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
                    
Install as a Cake Addin
#tool nuget:?package=SqlLinq.TimeSeries&version=2.1.0
                    
Install as a Cake Tool

CI NuGet

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, and ORDER BY aren't supported for time series data. Use FACET to group.

Clauses

  • SINCE, UNTIL set the time window to query. A plain duration is a fixed time, and ago counts back from the newest item: SINCE 1 hour ago UNTIL 10 minutes ago.
  • FACET groups by a value and returns a row per group: FACET Station.
  • LIMIT keeps the top facets, ranked by the first aggregate: FACET Station LIMIT 2.
  • TIMESERIES splits the window into buckets of a fixed size and returns a row per bucket, including empty ones: TIMESERIES 10 minutes.
  • SESSION splits 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 with TIMESERIES.
  • COMPARE WITH runs the query again over an earlier window and marks each row current or previous in a Comparison column: SINCE 1 hour ago COMPARE WITH 1 hour ago.

Aggregates

  • median is the middle value: median(WindSpeed).
  • percentile is the value at a percent of the values: percentile(WindSpeed, 95).
  • latest, earliest are the values of the newest and oldest items: latest(Temperature).
  • rate scales an aggregate to a duration, for how often something happens: rate(count(*), 1 minute).
  • derivative is 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 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