Datafication/Products/Datafication SDK

Datafication SDK

Analytical data processing for .NET. A column-oriented, in-memory DataBlock with a pandas-style API, a disk-backed VelocityDataBlock for data that outgrows memory, and connectors for the formats your data already lives in.

LicenseCommercial. Free for teams under five developers and $500,000 in revenue, and for open-source projects.
CoreDataBlock in memory, VelocityDataBlock on disk
ConnectorsCSV, Parquet, JSON, Excel, ADO.NET, Web, S3, text
Runtime.NET 8.0 or later; Windows, macOS, Linux
Packages10 on NuGet: Datafication.*
ReleasedDatafication.Core 1.0 on 2026-01-09

The problem it solves

Python has pandas and polars. .NET teams had LINQ, which is wonderful until you need a moving average, a pivot, a join across two files, or a pipeline with more than three steps. Analytical work ended up in a sidecar language, a spreadsheet, or a database nobody wanted to own, and the application that produced the data never got to use it.

The Datafication SDK is the data layer .NET never shipped: a columnar engine with the operations analysts expect, written to feel like .NET and to compile.

What the SDK is

At the center is the DataBlock, a column-oriented, in-memory analytical table. Every operation returns a new DataBlock, so a pipeline reads top to bottom and never mutates its input. Schemas carry labels, descriptions, formats, and constraints alongside the data.

using Datafication.Core.Data;
using Datafication.Extensions.Connectors.CsvConnector;

var sales = await DataBlock.Connector.LoadCsvAsync("sales.csv");

var result = sales
    .Where("region", "North America", ComparisonOperator.Equals)
    .Compute("profit_margin", "profit / revenue")
    .Where("profit_margin", 0.25, ComparisonOperator.GreaterThan)
    .GroupByAggregate("product_category", "revenue", AggregationType.Sum, "total_revenue")
    .Sort(SortDirection.Descending, "total_revenue");

Filtering with Where, WhereIn, and Filter; projection with Select; Sort; GroupBy and GroupByAggregate; Merge with inner, left, right, and full outer joins; aggregations from Sum to Percentile; computed columns through an expression language with arithmetic, comparison, logic, CASE WHEN, and about forty built-in functions; Pivot, Melt, and Transpose; and window functions.

When the data outgrows memory

VelocityDataBlock keeps the same query API and moves the data to disk in the DFC columnar format: typed, dictionary-encoded columns, SIMD-accelerated filters, LZ4 and Deflate compression, a write-ahead log, and compaction. The same Where, Compute, GroupByAggregate, and Sort calls build a query plan that runs when you call Execute().

4.7×
Velocity over in-memory, same scan
0
dependencies in Datafication.Core
7
connectors, one shape
10
packages on NuGet

Measured on a 1,000,000-row, 15-column dataset with batched cursor iteration, .NET 8 on an iMac, using the benchmark project in the samples. Your numbers will differ with hardware, column types, and query shape.

Compared with

Where DataBlock sits next to the ways .NET developers already work with tables.

Datafication SDKLINQ to ObjectsMicrosoft.Data.Analysispandas
StorageColumn-oriented DataBlockYour own row objectsColumn-oriented DataFrame (preview)Column-oriented DataFrame
Filter, sort, group, joinWhere, Sort, GroupByAggregate, Merge (inner, left, right, full)Where, OrderBy, GroupBy, JoinFilter, OrderBy, GroupBy, Mergemasks, sort_values, groupby, merge
Computed columnsCompute with an expression languageLambdasColumn arithmeticassign, eval
Larger than memoryVelocityDataBlock on diskNoNoNo (Dask, Polars)
Load fromCSV, Parquet, JSON, Excel, ADO.NET, Web, S3, textWhatever you parseCSV, and IDataView from ML.NETMany
LanguageC#, F#, any .NETC#, F#, any .NETC#, F#, any .NETPython

Connectors

Each connector is its own package, so an application takes only the formats it reads.

FormatPackageCapabilities
CSVDatafication.CsvConnectorLoad with a configurable separator and header row; CSV string sink. Its own parser, no third-party dependency.
ParquetDatafication.ParquetConnectorApache Parquet load and export.
JSONDatafication.JsonConnectorJSON files and APIs, with nested data flattened into columns.
ExcelDatafication.ExcelConnector.xlsx and .xls load; export to bytes.
ADO.NETDatafication.AdoConnectorSQL Server, PostgreSQL, SQLite, MySQL, or any registered provider factory. No driver bundled.
WebDatafication.WebConnectorHTML tables, CSS selectors, links, images, and page metadata; PDF and screenshot sinks.
S3Datafication.S3ConnectorAWS and S3-compatible storage, a single object or a multi-segment prefix.

The rest of the family

ServerREST
Datafication.Server.Core registers DataBlocks in an ASP.NET Core application and exposes them over HTTP, with a JSON query DSL for filtering, sorting, and aggregation from the client side.
API referenceDocs
Every public type in the published packages is documented at datafication.co/help/api.
SamplesGitHub
Component overviews and sample projects live in the public repository, with a changelog per release.

Licensing

The SDK ships under the Datafication SDK License Agreement, which is included in every package. It is free to use while fewer than five developers in your organization build with it and the organization's revenue is under $500,000 a year, and open-source projects are exempt from the developer limit. Above that, a commercial license applies, which adds priority email support and advance notice of breaking changes. support@datafication.co answers questions about which one applies to you.

Get the SDK

CoreDataBlock
dotnet add package Datafication.Core
A connectorFor example CSV
dotnet add package Datafication.CsvConnector
On diskVelocity
dotnet add package Datafication.Storage.Velocity