From 35d3c82f99f171cf6d26bdde285d8fe546e51aa1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peer=20Gr=C3=B8nnerup?= Date: Mon, 12 Jan 2026 15:34:47 +0100 Subject: [PATCH] Save with supporting files - initial version --- .../common/SaveWithSupportingFilesDialog.png | Bin 0 -> 10019 bytes .../assets/images/common/WorkspaceGitSync.png | Bin 0 -> 26207 bytes content/features/save-to-folder.md | 2 - .../features/save-with-supporting-files.md | 109 ++++++++++++++++++ content/features/toc.md | 1 + 5 files changed, 110 insertions(+), 2 deletions(-) create mode 100644 content/assets/images/common/SaveWithSupportingFilesDialog.png create mode 100644 content/assets/images/common/WorkspaceGitSync.png create mode 100644 content/features/save-with-supporting-files.md diff --git a/content/assets/images/common/SaveWithSupportingFilesDialog.png b/content/assets/images/common/SaveWithSupportingFilesDialog.png new file mode 100644 index 0000000000000000000000000000000000000000..dd2b380a1d4383bae16f11b8b6811483c7bb9541 GIT binary patch literal 10019 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 literal 0 HcmV?d00001 diff --git a/content/assets/images/common/WorkspaceGitSync.png b/content/assets/images/common/WorkspaceGitSync.png new file mode 100644 index 0000000000000000000000000000000000000000..79488d7f334fd23b58cbc4aa632aa3ea54228cd5 GIT binary patch literal 26207 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 Ilv(Ki0Gg*RPyhe` literal 0 HcmV?d00001 diff --git a/content/features/save-to-folder.md b/content/features/save-to-folder.md index 30ee426d..cb0ff125 100644 --- a/content/features/save-to-folder.md +++ b/content/features/save-to-folder.md @@ -34,8 +34,6 @@ To save your model to folder, follow these steps: ## Serialization settings The serialization settings defines how the model objects are split into separate files. In these settings you can also define if you wish to use JSON or TMDL formats. -> [!NOTE] ->JSON is the default format as TMDL is currently in preview. ### [Tabular Editor 2 Preferences](#tab/TE2Preferences) diff --git a/content/features/save-with-supporting-files.md b/content/features/save-with-supporting-files.md new file mode 100644 index 00000000..68c32139 --- /dev/null +++ b/content/features/save-with-supporting-files.md @@ -0,0 +1,109 @@ +--- +uid: save-with-supporting-files +title: Save with supporting files +author: Peer Grønnerup +updated: 2026-01-12 +applies_to: + products: + - product: Tabular Editor 2 + none: true + - product: Tabular Editor 3 + editions: + - edition: Desktop + none: true + - edition: Business + full: true + - edition: Enterprise + full: true +--- +# Save with supporting files + +Save with supporting files is a feature that enables saving of semantic models with additional supporting files that follow the source code format required for Git Integration in Microsoft Fabric. This feature ensures that your Tabular Editor models are fully compatible with Fabric's Git integration capabilities, allowing seamless version control and deployment workflows. + +When you save a semantic model with supporting files, Tabular Editor creates a folder structure that includes all necessary metadata files required by Microsoft Fabric's Git integration. This allows you to use Fabric Git integration to synchronize your semantic models between Fabric workspaces and Git repositories. + +> [!NOTE] +> Saving with supporting files is only available when saving to .bim (TMSL) or when Save to Folder is set to TMDL as serialization mode. + +## File structure and model properties + +Semantic models saved with supporting files are stored in a folder with the **.SemanticModel** suffix. This suffix is required by Microsoft Fabric to recognize the folder as a semantic model item. If the parent folder does not have the .SemanticModel suffix, you will be prompted with a confirmation dialog to rename the folder. + +> [!IMPORTANT] +> Model properties such as **name** and **description** are maintained through the **Name** and **Description** properties of the Database object in the TOM Explorer. These properties are automatically synchronized to the .platform metadata file. The folder name itself has no impact on the semantic model properties when deployed to Microsoft Fabric. + +### Files included + +Every saved model includes these core files: +- **.platform** - Metadata about the item including its type, display name, and description. Also contains a logicalId property, an automatically generated cross-workspace identifier. +- **definition.pbism** - Overall definition and core settings of the semantic model. + +The complete folder structure depends on your serialization format: + +| Format | Model storage | +|--------|------------------| +| **TMDL** | `\definition` folder containing TMDL files with the model metadata | +| **TMSL (.bim)** | `model.bim` file (automatically saved with a fixed filename) | + +## How to save with supporting files + +To save your model with supporting files: + +1. Create a new or open an existing semantic model in Tabular Editor 3 +2. Ensure your serialization mode is set to either TMDL or that you're saving as a .bim file + - Go to **Tools > Preferences > File Formats** to configure serialization settings +3. Click on **File > Save As** or **File > Save to Folder** +4. Choose a folder where you want to save your model + - Check the checkbox **Save with supporting files** + ![Save with supporting files dialog](~/content/assets/images/common/SaveWithSupportingFilesDialog.png) +5. Click **Save** + - If the folder name doesn't end with .SemanticModel, you'll be prompted to confirm the folder renaming + +Tabular Editor will create the folder structure with all necessary files in the format compatible with Microsoft Fabric Git integration. + +> [!IMPORTANT] +> The model culture must be present when synchronizing the model from Git to Microsoft Fabric. If the culture is not set, Fabric will apply its default culture, which can result in uncommitted changes appearing after the initial synchronization. To prevent this, Tabular Editor automatically sets the model culture to **en-US** when saving with supporting files. + +## Git Integration in Microsoft Fabric + +The **Save with supporting files** feature is designed to work seamlessly with Microsoft Fabric's Git integration capabilities. + +> [!NOTE] +> Git Integration is available on workspaces assigned to: +> - Microsoft Fabric F-SKU capacity +> - Power BI Premium capacity +> - Power BI Premium Per User (PPU) + +### Workflow with Fabric Git integration + +1. **Save your model** using the Save with supporting files option in Tabular Editor 3 +2. **Commit the changes** to your Git repository +3. **Connect your Fabric workspace** to the Git repository +4. **Synchronize** your model between Fabric and Git using the **Update all** button in the workspace source control pane. + ![Synchronize workspace with Git](~/content/assets/images/common/WorkspaceGitSync.png) + +For more information about working with Git integration in Fabric, see the following resources: +- [Microsoft Fabric Git integration documentation](https://learn.microsoft.com/en-us/fabric/cicd/git-integration/intro-to-git-integration?tabs=azure-devops) +- [Tabular Editor and Fabric Git Integration blog post](https://tabulareditor.com/blog/tabular-editor-and-fabric-git-integration) + +## Comparing serialization formats + +When using Save with supporting files, you can choose between two serialization formats: + +### TMDL (Tabular Model Definition Language) +- Human-readable text format +- Easier to review changes in Git diffs +- Better for code reviews and collaboration +- Learn more: [TMDL documentation](tmdl.md) + +### TMSL/JSON (.bim) +- JSON-based format +- Single file representation +- Compatible with older tools and workflows + +Both formats are supported by Microsoft Fabric Git integration, and the choice depends on your team's preferences and workflow requirements. + +## See also + +- [Save to folder](save-to-folder.md) +- [TMDL - Tabular Model Definition Language](tmdl.md) diff --git a/content/features/toc.md b/content/features/toc.md index b84b5325..06fcc2a4 100644 --- a/content/features/toc.md +++ b/content/features/toc.md @@ -54,6 +54,7 @@ ## @workspace-mode ## @tmdl ## @save-to-folder +## @save-with-supporting-files # Command Line and Integration ## @command-line-options \ No newline at end of file