Release Notes — v1.8¶
Release date: March 2026
This release adds dictionary rename — named column sets that source bulk column mappings from Delta tables, YAML files, or runtime parameters — and naming enhancements including kebab-case, collision dedup, and reserved word protection.
Dictionary Rename (Column Sets)¶
Configuration¶
Declare column_sets at the weave or loom level. Each column set
maps raw column names to friendly names from an external source.
column_sets:
sap_dictionary:
source:
type: delta
alias: ref.column_dictionary
from_column: raw_name
to_column: friendly_name
filter: "system = 'SAP'"
on_unmapped: pass_through
on_extra: ignore
on_failure: abort
runtime_overrides:
param: column_overrides
Reference a column set in a rename step:
Source Types¶
| Source | Configuration | Use case |
|---|---|---|
| Delta table | type: delta, alias or path |
Shared dictionary in lakehouse |
| YAML file | type: yaml, path |
Version-controlled mappings |
| Runtime parameter | param: <name> |
Orchestration-driven mappings |
Behavior Controls¶
| Setting | Values | Default | Description |
|---|---|---|---|
on_unmapped |
pass_through, error |
pass_through |
DataFrame columns with no mapping entry |
on_extra |
ignore, warn, error |
ignore |
Mapping entries for non-existent columns |
on_failure |
abort, warn, skip |
abort |
Source read failure or empty result |
Cascade¶
Column sets cascade from loom → weave. Weave-level definitions with the same name override loom-level definitions.
Naming Enhancements¶
kebab-case Pattern¶
kebab-case is now a supported naming pattern:
Backtick-quoting required
Hyphenated column names require backtick-quoting in Spark SQL expressions. A validation warning is emitted when selected.
Collision Dedup¶
When normalization produces duplicate column names, the new
on_collision setting controls the behavior:
| Value | Behavior |
|---|---|
error (default) |
Raise ConfigError listing collisions |
suffix |
Append _2, _3 in source column order |
Reserved Word Protection¶
Prevent SQL-reserved column names from breaking downstream queries:
naming:
columns: snake_case
reserved_words:
strategy: prefix
prefix: "_"
extend: [timestamp, value]
exclude: [to, by]
| Strategy | Behavior |
|---|---|
quote (default) |
No-op — Spark backtick-quotes automatically |
prefix |
Prepend configured prefix string |
error |
Raise ConfigError listing conflicts |
The default reserved word list contains 82 ANSI SQL:2016 keywords.
Use extend and exclude to customize.
Pipeline Order¶
The full naming pipeline executes in a fixed order:
- Rename — column set + static mappings applied
- Normalize — pattern transformation (snake_case, etc.)
- Dedup — collision resolution (suffix or error)
- Reserved words — protection applied (prefix, quote, error)
Observability¶
ColumnSetResultcaptures per-column-set resolution outcome (name, source_type, mappings_loaded, skipped)WeaveTelemetry.column_set_resultspopulates structured results from materialization- DEBUG-level per-mapping logs for rename, normalize, and reserved word operations
New Public Exports¶
From weevr.model:
ColumnSet— column set domain modelColumnSetSource— source configuration for column setsReservedWordConfig— reserved word protection settings
From weevr.telemetry:
ColumnSetResult— per-column-set resolution result
Compatibility¶
No breaking changes. All new fields default to None or safe
defaults — existing configurations work without modification.
| Component | Version |
|---|---|
| Python | 3.11 |
| PySpark | 3.5.x |
| Delta Lake | 3.2.x |
| Microsoft Fabric Runtime | 1.3 |