Dotnet SDK
Dotnet SDK for Spice.ai
The Dotnet SDK SpiceAI is the easiest way to query Spice.ai from Dotnet.
It uses Apache Arrow Flight to efficiently stream data to the client and Apache Arrow Records as data frames.
Requirements
The package targets .NET Standard 2.0, .NET 8.0, .NET 9.0, and .NET 10.0. .NET 8.0 or later is recommended.
Installation
Add Spice SDK
dotnet add package SpiceAIUsage
Create a
SpiceClientby providing your API key toSpiceClientBuilder. Get your free API key at Spice.ai.
SpiceClient implements IDisposable, so declare it with using.
using Spice;
using var client = new SpiceClientBuilder()
.WithSpiceCloud("API_KEY")
.Build();WithSpiceCloud takes the API key, not a URL, and applies the Spice.ai Cloud endpoints itself. The key must be in appId|key form. To connect to a custom endpoint, use WithFlightAddress instead.
The builder also accepts WithApiKey(string), WithFlightAddress(string), WithHttpAddress(string), WithMaxRetries(int) (default 3), WithUserAgent(string), and WithTls(bool).
Execute a query and get back an Apache Arrow Flight Client Record Batch Stream Reader.
Iterate through the reader to access the records.
Parameterized queries
SqlWithParamsAsync(string sql, params object?[] parameters) binds positional $1, $2 placeholders:
Asynchronous queries
QueryAsync(string sql) and QueryWithParamsAsync(string sql, params object?[] parameters) submit a query for asynchronous execution and return an AsyncQuery handle instead of a reader. They require the runtime to be running in distributed (scheduler) mode.
The handle also exposes Id, GetStatusAsync(), WaitAsync(), and CancelAsync().
Usage with local Spice runtime
Follow the quickstart guide to install and run spice locally. The builder defaults to the local runtime:
Or using a custom flight address:
Default endpoints
Spice.ai Cloud
https://flight.spiceai.io:443
https://data.spiceai.io
Local runtime
http://localhost:50051
http://localhost:8090
The Cloud endpoints can be set with SPICE_FLIGHT_URL and SPICE_HTTP_URL, and the local endpoints with SPICE_LOCAL_FLIGHT_URL and SPICE_LOCAL_HTTP_URL.
Refreshing a dataset
RefreshDatasetAsync(string datasetName) triggers a refresh of an accelerated dataset.
Contributing
Contribute to or file an issue with the spice-dotnet library at: https://github.com/spiceai/spice-dotnet
Last updated
Was this helpful?