Skip to main content

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:

SettingDefaultBehavior
SemanticModelEnableNTurns semantic model generation on for the build. When disabled or blank, no semantic model output is produced.
SemanticModelOutputPath@@OutputPath/SemanticModelsWhere the definition folders are written. The @@OutputPath token resolves to the build output folder.
SemanticModelFlavorDirectLakeOnOneLakeThe Direct Lake source binding for the model. A blank value resolves to the default. A project-scoped value overrides the instance-level value.
SemanticModelNameblankThe 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.
SemanticModelDescriptionblankA 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.