Rust implementation of the Teckel Specification v3.0 -- a declarative YAML-based language for defining data transformation pipelines.
This crate provides the parser and model layer: YAML parsing, variable/secret resolution, validation, and conversion to a typed domain model. The execution backend is implemented in a separate repository.
| Crate | Description |
|---|---|
teckel-model |
Core domain types: assets, sources, 45 transformation types, error catalog, quality, metadata |
teckel-parser |
YAML deserialization, variable substitution, secret resolution, config merging, validation (V-001..V-008), rewrite to domain model |
use teckel_parser::parse;
use std::collections::BTreeMap;
let yaml = r#"
version: "2.0"
input:
- name: employees
format: csv
path: "data/employees.csv"
options:
header: true
transformation:
- name: active
where:
from: employees
filter: "status = 'active'"
output:
- name: active
format: parquet
path: "output/active_employees"
mode: overwrite
"#;
let context = parse(yaml, &BTreeMap::new()).unwrap();
// context is a BTreeMap<AssetRef, Asset> representing the pipeline DAGThis parser supports parsing all constructs defined in the Teckel v3.0 specification:
- Core (Sections 1-12): Document structure, inputs, outputs, 10 basic transformations, expression language (as raw strings), data types, null semantics, variable substitution, path resolution, validation rules, execution model, error catalog
- Extended (Sections 8.11-8.31, 13-21): All 45 transformations, secrets, configuration, hooks, data quality, metadata, exposures, templates, config merging
cargo build
cargo test
cargo clippyApache License 2.0