Release Notes — v1.9¶
Release date: March 2026
This release adds reserved word presets — named, curated word lists for DAX, M language (Power Query), and T-SQL that protect column and table names from conflicts when Delta tables are consumed by Power BI semantic models, Power Query dataflows, or Fabric SQL analytics endpoints.
Reserved Word Presets¶
Background¶
v1.8 introduced reserved word protection with a single ANSI SQL word list. v1.9 extends this into a preset system where each query language context has its own curated word set. Presets are self-contained and combinable.
Configuration¶
Select presets with the new preset field on reserved_words:
A single string or a list is accepted:
# Multi-engine protection:
reserved_words:
preset: [ansi, dax, tsql]
strategy: prefix
extend: [fiscal_year]
exclude: [by]
Built-in Presets¶
| Preset | Words | Description |
|---|---|---|
ansi |
~80 | ANSI SQL reserved keywords (existing default) |
dax |
~28 | DAX reserved words for Power BI semantic models |
m |
~21 | M language (Power Query) reserved words |
powerbi |
~45 | Convenience alias — expands to dax + m |
tsql |
~156 | T-SQL reserved keywords for SQL endpoints |
Composition Rules¶
- Default when omitted:
ansi(backwards compatible with v1.8) - Explicit replaces default: specifying any preset replaces
the implicit ANSI default. To include ANSI alongside others,
list it explicitly:
preset: [ansi, dax] - Self-contained: each preset includes all words needed for
that language context, including any ANSI overlaps.
preset: [tsql]alone gives full T-SQL protection. - Union composition: multiple presets are merged via set union
- extend/exclude compose on top: project-specific words add to or remove from the resolved preset union
Table Name Protection¶
Reserved word protection now applies to both column names and the target table name. Previously, only column names were checked. Table names matching a reserved word are handled per the configured strategy (prefix, quote, or error).
Observability¶
- DEBUG log: resolved preset names and effective word count
- DEBUG log: individual table name reserved word matches
New Public Exports¶
From weevr.model:
ReservedWordPreset— StrEnum of built-in preset names
Compatibility¶
No breaking changes. The preset field defaults to None,
preserving the existing ANSI SQL behavior for all configurations
that do not specify a preset.
| Component | Version |
|---|---|
| Python | 3.11 |
| PySpark | 3.5.x |
| Delta Lake | 3.2.x |
| Microsoft Fabric Runtime | 1.3 |