Best practices
Convert and store
- Prefer Parquet or JSON Lines for large or nested data. Avoid in-memory JSON arrays.
- Use
--low-memoryon multi-GBconvert,sort, anddedup. See performance. - Inspect the live catalog before choosing an output:
undatum formats list --writable. - Pass
--on-error skip(and--error-log) when a few malformed rows should not abort a job.
Validate before you publish
- Encode expectations in a rules file and run
undatum validate --rules rules.yml. - Pair validation with
analyze/profileandpackage validate. - For schema-only checks, use
undatum schema --validate; keepvalidatefor rule packs.
Query and transform
- Use
--filtercomparison expressions for simple subsets; usesqlforLIKE,IN, joins, and aggregations. - Apply filters early (
select --filter,search) to cut volume before heavier steps. - Prefer DuckDB (
--engine duckdborauto) on CSV/JSONL/Parquet.
Pipelines and agents
- Validate pipeline YAML with
undatum pipeline validatebeforerun. - Give agents
mcp serverather than unconstrained shell access. - Keep core verbs (
convert,stats,validate,select) stable in scripts; checkCHANGELOG.mdbefore pinning flags.
Configuration
Put shared defaults in undatum.yaml or ~/.undatum/config.yaml, then inspect with undatum config show. See config.