DFE Schemas
Shared schema definitions for the Data Fusion Engine (DFE) platform - the single source of truth for the data-structure definitions that multiple DFE components must agree on (dfe-engine, dfe-loader, dfe-receiver, dfe-archiver).
Usage
Install the Python package. The schema trees ship as package data under
dfe_schemas/data/, alongside the dfe_schemas.clickhouse engine resolver and
the declared deploy defaults:
pip install dfe-schemas
python -c "import dfe_schemas; print(dfe_schemas.schemas_root())"
Point DFE_SCHEMAS_DIR at your own directory to override the shipped trees:
export DFE_SCHEMAS_DIR=/opt/dfe/schemas
Validate locally (needs dfe-engine importable - point PY at an interpreter
that has it):
make validate PY=../dfe-engine/.venv/bin/python
Structure
dfe-schemas/
|-- common-header/ # header profiles: timeseries (9 col, default),
| # minimal (5 col), passthrough (4 col)
|-- meta/ # source meta schemas, by provider (aws/ azure/ gcp/ m365/
| # runzero/ ...)
|-- additional/ # extra-field overlays: aws/, and snapshot/envelope.yaml,
| # the store-snapshot envelope every dump store composes
|-- hunts/ # hunt output (results.yaml) + runner checkpoint schema
|-- tables/ # tables in exact ClickHouse types: otel/ + engine internal/
|-- sources/ # engine-owned source definitions (main, the landing table)
|-- scripts/ # validate_schemas / annotate_meta_schemas /
| # generate_meta_schemas (a meta schema from live rows)
|-- docs/meta-schema.md # the YAML format reference (version tree, columns, types)
|-- docs/tables.md # the tables/ format reference (clauses, exact CH columns)
'-- Makefile # validate
Every schema YAML carries its own version tree - each version entry is a
complete column snapshot with SchemaVer semantics (model / addition /
revision), published versions are immutable, and consumers pin versions
independently. Full format reference, column fields, the 13-primitive type
system, and the @directive expression language:
docs/meta-schema.md.
How these reach ClickHouse
One applier, three callers. The dfe-schema entry point in the dfe-engine
image reads this tree and reconciles ClickHouse against it: dfe-infra runs it
as a Job before the data plane starts, dfe-docker runs it as a compose
init service, and the engine repeats it idempotently at boot. Rendering SQL
here and applying it separately was a SECOND definition of the same tables, so
it is gone -- there is one DDL path and it reads these files.
Consumers
| Project | Language | Role | Schema types used |
|---|---|---|---|
| dfe-engine | Python | DDL generation, schema builder, hunt output | All |
| dfe-loader | Rust | Table creation, field enrichment, auto-init | common-header |
| dfe-receiver | Rust | Field validation | common-header |
| dfe-archiver | Rust | Table detection | common-header |
Rust services slave from the DEPLOYED ClickHouse schema at runtime
(system.columns) - they never read this YAML directly.
Updating schemas
- Branch here, add a NEW version entry (complete column snapshot - never
modify a published version), update
current, commit, PR to main. - Cut a release (CI
workflow_dispatch,from-head=true) so the wheel carrying the new trees reaches PyPI. - Raise the
dfe-schemasfloor in each consumer and relock (dfe-engine:pyproject.toml+uv.lock). - Copy changed common-header profiles to the consumers' bundled fallback
locations (dfe-engine:
src/dfe_engine/schema/profiles/), which is what answers when neitherDFE_SCHEMAS_DIRnor the package is available.
Shipped files here are read-only defaults - customise by pointing
DFE_SCHEMAS_DIR at your own directory with only the profiles you override.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dfe_schemas-0.2.3.tar.gz.
File metadata
- Download URL: dfe_schemas-0.2.3.tar.gz
- Upload date:
- Size: 36.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8731677305e25e18a340eebbbf4e7d0d4383462aec298bbfd1a3184215d3dc40
|
|
| MD5 |
bdf1fc9a1fcbdcb832f3bb1965c6450f
|
|
| BLAKE2b-256 |
d90547701e499f3c79dca87fd79e55cefabcd9f253426d05c1c7132535145020
|
File details
Details for the file dfe_schemas-0.2.3-py3-none-any.whl.
File metadata
- Download URL: dfe_schemas-0.2.3-py3-none-any.whl
- Upload date:
- Size: 69.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
22a3bcfa80afdf54111df0ce1f6be43203721139520ca87fa201ac36e277ebcf
|
|
| MD5 |
48013886ca033adc97f69fb4241ce00a
|
|
| BLAKE2b-256 |
adc083c226685771e78572339d4ffa6f9a8e73d3197dd6cb0ab3dbd48d8536c7
|