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
Two consumption modes, one content.
As a Python package (the schema trees ship as package data, plus 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())"
Or mount as a git submodule in each consuming project:
git submodule add https://github.com/hyperi-io/dfe-schemas.git schemas
git submodule update --init --recursive
Override the submodule path with DFE_SCHEMAS_DIR:
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/)
|-- additional/ # extra-field overlays (aws/)
|-- hunts/ # hunt output (results.yaml) + runner checkpoint schema
|-- tables/ # tables in exact ClickHouse types: otel/ + engine internal/
|-- scripts/ # validate_schemas / annotate_meta_schemas
|-- 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. - Bump the submodule pin in each consumer
(
git submodule update --remote schemas, commit the pin). - Copy changed common-header profiles to the consumers' bundled fallback
locations (dfe-engine:
src/dfe_engine/schema/profiles/) so package installs work without a submodule checkout.
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.1.0.tar.gz.
File metadata
- Download URL: dfe_schemas-0.1.0.tar.gz
- Upload date:
- Size: 30.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","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 |
1b0ea12d928d0fdbf8d237da38ae6627aa94ac0dddfc7d1756c80ef3784f56c3
|
|
| MD5 |
6a613659686e865ed721e5cd8a30b59a
|
|
| BLAKE2b-256 |
21c5f56d10014bda66a8067dbc79f620ea1d1a50549a44382c07e248a49a1815
|
File details
Details for the file dfe_schemas-0.1.0-py3-none-any.whl.
File metadata
- Download URL: dfe_schemas-0.1.0-py3-none-any.whl
- Upload date:
- Size: 55.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","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 |
b6a8c910494302732d427e8e7243c48c9421143f618151ec64ff19581aeea9bc
|
|
| MD5 |
81f27eabe1063ead10b886d418427f6b
|
|
| BLAKE2b-256 |
381ade4e612bc11f83ff33b779fdfdbbaf98f902eed13d38bc0490d661f9b82b
|