Semantic Models
BimlFlex can generate Power BI Direct Lake semantic model definitions in TMDL (Tabular Model Definition Language) as part of a Microsoft Fabric Data Factory build. The same metadata that produces your Fabric pipelines also describes your dimensional model, and with semantic model generation enabled, the build writes semantic model definition folders alongside the rest of your Fabric output. Semantic model generation is included in the latest BimlFlex builds as an opt-in preview and is off by default.
:::info Preview Semantic model generation is an opt-in preview, disabled by default. The covered source binding is Direct Lake on OneLake. The build emits definition files as build output and does nothing beyond that. :::
Varigence has generated Analysis Services Tabular semantic models from metadata for years in BimlStudio, and semantic model generation brings that same discipline to Power BI Direct Lake on Fabric.
What a build emits
When semantic model generation is enabled, each Fabric Data Factory project in the build produces one semantic model, built from the dimension and fact objects in that project. Objects excluded from the model in metadata are left out, and a project with no dimension or fact objects produces no model.
Each model is written as a definition folder in the layout Fabric uses for semantic models in git:
<Name>.SemanticModel/
.platform
definition.pbism
definition/
database.tmdl
expressions.tmdl
model.tmdl
relationships.tmdl
tables/
<Table>.tmdl
There is one table file per dimension or fact. Tables carry directLake entity partitions bound to OneLake through a shared source expression, and relationships between the tables in the model are emitted from the references in your metadata.
Enabling and configuring
The feature is enabled and configured from the settings editor. The settings live in the Microsoft Fabric group:
| Setting | Default | Behavior |
|---|---|---|
SemanticModelEnable | N | Turns semantic model generation on for the build. When disabled or blank, no semantic model output is produced. |
SemanticModelOutputPath | @@OutputPath/SemanticModels | Where the definition folders are written. The @@OutputPath token resolves to the build output folder. |
SemanticModelFlavor | DirectLakeOnOneLake | The Direct Lake source binding for the model. A blank value resolves to the default. A project-scoped value overrides the instance-level value. |
SemanticModelName | blank | The model name. Blank means the project name is used. The resolved name becomes the Name.SemanticModel folder name and the display name in the .platform file. |
SemanticModelDescription | blank | A description written to the generated model's .platform metadata. Blank means no description property is written. |
When an instance has more than one Fabric project, set SemanticModelName per project. An instance-level name resolves to the same value for every project, and models whose resolved names collide are skipped with a build error so their output folders cannot overwrite each other.
How output is verified
Emitted output is checked for compatibility with Microsoft's publicly available Tabular Object Model library. That check is compatibility verification, not a certification or endorsement by Microsoft.
Generation is deterministic. The same metadata produces the same output on every build.
Boundaries
- Semantic model generation is an opt-in preview and is off by default.
- The covered source binding is Direct Lake on OneLake.
- The build writes semantic model definition folders into the build output and nothing more.