Skip to content

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:

steps:
  - rename:
      column_set: sap_dictionary
      columns:
        MANUAL_COL: manual_override  # static wins

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:

naming:
  columns: kebab-case

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:

naming:
  columns: snake_case
  on_collision: suffix  # _2, _3 suffixes in source order
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:

  1. Rename — column set + static mappings applied
  2. Normalize — pattern transformation (snake_case, etc.)
  3. Dedup — collision resolution (suffix or error)
  4. Reserved words — protection applied (prefix, quote, error)

Observability

  • ColumnSetResult captures per-column-set resolution outcome (name, source_type, mappings_loaded, skipped)
  • WeaveTelemetry.column_set_results populates 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 model
  • ColumnSetSource — source configuration for column sets
  • ReservedWordConfig — 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