Open-source data toolkit for .NET

From data contracts
to actual data.

Packata is a .NET library and CLI for exploring, validating and provisioning datasets described by Frictionless Data Package v2 and ODCS contracts.

The asset workflow

Select a stage to explore an illustrative example. Provisioning is available through the .NET library.

Load a contract

Read a Data Package v2 or ODCS document into a shared model. Inspection reads metadata without opening the dataset.

$ packata contract inspect contract.yaml --output-format json
// Excerpt of the JSON result
"identity": { "name": "customer-directory" },
"assets": [ { "id": "customers", … } ]
Read about contract inspection

Discover assets and schema

Inspect an asset's fields, constraints, metadata and endpoint bindings using its exact identifier.

$ packata contract inspect contract.yaml --asset customers
Contract: customer-directory
└── Assets
    └── customers
        └── schema
            └── fields
                ├── id
                ├── name
                └── country
… (tree excerpt)
Explore the inspection command

Preview customers

$ packata data preview contract.yaml
  --asset customers --limit 20
Illustrative customers preview
idnamecountry
101AliceBE
102BobFR
103ClaraDE

Validate the contract

Check descriptor structure and supported semantic rules. Diagnostics identify invalid contract values; this command does not validate dataset records.

$ packata contract validate contract.yaml --output-format json
{
  "schemaVersion": 1,
  "source": "contract.yaml",
  "valid": true,
  "diagnostics": []
}
See validation scope and diagnostics

Provision through the .NET library

Deploy schema and load data into supported relational destinations. For example, use a configured DuckDB provider to build an in-memory destination.

// C# · with a mapped contract and configured connections/readers
using Packata.Provisioners.Database;

var provisioner = new DubUrlProvisionerBuilder(connections, readers)
    .Using("duck").InMemory().WithDatabase("mydb").Build();
await provisioner.ExecuteAsync(contract);

Requires a compatible provider and driver. Schema deployment and bulk loading depend on destination capabilities. There is currently no provisioning CLI command.

Set up provisioning and check support

Build with Packata

Your tools. Your workflow.

Command-line interface

Explore and inspect data assets directly from your terminal.

CLI Quickstart

.NET library

Integrate contract-aware data operations into your own solutions.

.NET Quickstart

Works with open standards

Data Package v2 ODCS CSV Parquet NDJSON