AgentSkillsCN

tabular-editor-config

当用户询问“.tmuo 文件”、“Tabular Editor 用户选项”、“TE3 首选项”、“Preferences.json”、“UiPreferences.json”、“Layouts.json”、“工作区数据库设置”、“部署首选项”、“数据源覆盖”、“键盘快捷键”、“DAX 编辑器设置”、“TMDL 选项”或“每模型 TE3 配置”时,应运用此技能。为理解并配置 Tabular Editor 3 的配置文件(包括应用偏好与模型级用户选项)提供指导。

SKILL.md
--- frontmatter
name: tabular-editor-config
description: This skill should be used when the user asks about ".tmuo files", "Tabular Editor user options", "TE3 preferences", "Preferences.json", "UiPreferences.json", "Layouts.json", "workspace database settings", "deployment preferences", "data source overrides", "keyboard shortcuts", "DAX editor settings", "TMDL options", or "per-model TE3 configuration". Provides guidance for understanding and configuring Tabular Editor 3 configuration files including application preferences and model-level user options.

Tabular Editor User Options (.tmuo)

Expert guidance for understanding and configuring Tabular Editor 3 user options files for Power BI semantic model development.

When to Use This Skill

Activate automatically when tasks involve:

  • Understanding .tmuo file structure and purpose
  • Configuring workspace database connections
  • Setting up deployment preferences
  • Managing data source overrides for development
  • Configuring table import settings
  • Troubleshooting credential encryption issues

Critical

  • TMUO files contain user-specific settings - never commit to version control
  • Credentials are encrypted with Windows User Key - cannot be shared between users
  • Add *.tmuo to .gitignore in all projects
  • Each developer needs their own .tmuo file

About TMUO Files

  • Introduced in Tabular Editor 3 for storing developer- and model-specific preferences
  • Created automatically when opening a Model.bim or Database.json file
  • Contains workspace, deployment, and data source settings

File Location

TMUO files are stored alongside the model file with a user-specific name:

ComponentValue
LocationSame directory as model.bim or Database.json
Naming<ModelFileName>.<WindowsUserName>.tmuo
ExampleAdventureWorks.bim + user JohnDoe = AdventureWorks.JohnDoe.tmuo

Important:

  • One .tmuo file per model per user
  • Never commit to version control (add *.tmuo to .gitignore)
  • Credentials are encrypted with Windows User Key - cannot be shared between users
  • Each developer creates their own .tmuo automatically when opening the model

Cross-Platform Access (macOS/Linux)

When working on macOS or Linux with models stored on a Windows VM:

Parallels on macOS:

code
/Users/<macUser>/Library/Parallels/Windows Disks/{VM-UUID}/[C] <DiskName>.hidden/

TMUO files will be alongside models in Windows directories, e.g.:

  • <ParallelsRoot>/Users/<WinUser>/Documents/Models/MyModel.bim
  • <ParallelsRoot>/Users/<WinUser>/Documents/Models/MyModel.<WinUser>.tmuo

Other platforms:

  • VMware Fusion - Check /Volumes/ for mounted Windows drives
  • WSL on Windows - /mnt/c/Users/<username>/...

Note: The VM must be running for the filesystem to be accessible.

Quick Reference

TMUO JSON Structure

SectionPurpose
UseWorkspaceWhether to use workspace database
WorkspaceConnectionServer for workspace database
WorkspaceDatabaseName of workspace database
DeploymentTarget server and deployment options
DataSourceOverridesOverride connection strings for workspace
TableImportSettingsSettings for Import Tables feature
RefreshOverridesAdvanced refresh configuration
json
{
  "UseWorkspace": true,
  "WorkspaceConnection": "localhost",
  "WorkspaceDatabase": "MyModel_Workspace_JohnDoe",
  "Deployment": {
    "TargetConnectionString": "powerbi://api.powerbi.com/v1.0/myorg/Workspace",
    "TargetDatabase": "MyModel",
    "DeployPartitions": false,
    "DeployModelRoles": true
  },
  "DataSourceOverrides": {
    "SQL Server": {
      "ConnectionString": "Data Source=localhost;Initial Catalog=DevDB"
    }
  }
}

Workspace Settings

Control workspace database behavior:

FieldTypeDescription
UseWorkspaceboolEnable/disable workspace mode
WorkspaceConnectionstring/objectServer connection (plain or encrypted)
WorkspaceDatabasestringDatabase name (should be unique per developer/model)
json
{
  "UseWorkspace": true,
  "WorkspaceConnection": "provider=MSOLAP;data source=localhost",
  "WorkspaceDatabase": "AdventureWorks_Workspace_JohnDoe_20240115"
}

Deployment Settings

Configure deployment target and options:

FieldTypeDescription
TargetConnectionStringstring/objectTarget server connection
TargetDatabasestringTarget database name
DeployDataSourcesboolDeploy data source definitions
DeployPartitionsboolDeploy partition definitions
DeployRefreshPolicyPartitionsboolDeploy incremental refresh partitions
DeployModelRolesboolDeploy security roles
DeployModelRoleMembersboolDeploy role members
DeploySharedExpressionsboolDeploy shared M expressions
json
{
  "Deployment": {
    "TargetConnectionString": "powerbi://api.powerbi.com/v1.0/myorg/Production",
    "TargetDatabase": "Sales Analytics",
    "DeployDataSources": false,
    "DeployPartitions": false,
    "DeployRefreshPolicyPartitions": true,
    "DeployModelRoles": true,
    "DeployModelRoleMembers": false,
    "DeploySharedExpressions": true
  }
}

Data Source Overrides

Override data source connections for workspace database:

FieldTypeDescription
ImpersonationModeenumAuthentication mode
UsernamestringUsername for authentication
ConnectionStringstring/objectOverride connection string
Passwordstring/objectPassword (can be encrypted)
AccountKeystring/objectAzure storage account key
PrivacySettingstringPrivacy level

ImpersonationMode values:

  • Default
  • ImpersonateAccount
  • ImpersonateAnonymous
  • ImpersonateCurrentUser
  • ImpersonateServiceAccount
  • ImpersonateUnattendedAccount
json
{
  "DataSourceOverrides": {
    "SQL Server DW": {
      "ImpersonationMode": "ImpersonateServiceAccount",
      "ConnectionString": "Data Source=dev-server;Initial Catalog=DevDW"
    },
    "Azure Blob": {
      "AccountKey": {
        "Encryption": "UserKey",
        "EncryptedString": "ABC123..."
      }
    }
  }
}

Table Import Settings

Settings for the Import Tables / Schema Update feature:

FieldTypeDescription
ServerTypeenumDatabase type
UserIdstringUsername
Passwordstring/objectPassword (plain or encrypted)
OptionsobjectAdditional server-specific options

ServerType values:

  • Sql, Oracle, Odbc, OleDb, Snowflake, Dataflow
  • PostgreSql, MySql, MariaDb, Db2, Databricks, OneLake
json
{
  "TableImportSettings": {
    "Sales Data": {
      "ServerType": "Sql",
      "UserId": "sqladmin",
      "Password": {
        "Encryption": "UserKey",
        "EncryptedString": "..."
      }
    }
  }
}

Encrypted Credentials

Credentials can be stored encrypted using Windows User Key:

json
{
  "ConnectionString": {
    "Encryption": "UserKey",
    "EncryptedString": "ABC123..."
  }
}

Or for deployment targets:

json
{
  "TargetConnectionString": {
    "ConnectionString": "powerbi://...",
    "EncryptedCredentials": "XYZ789..."
  }
}

Note: Encrypted strings are tied to the Windows user account and cannot be shared.

File Naming Convention

code
<ModelFileName>.<WindowsUserName>.tmuo

Examples:

  • Model.bim opened by JohnDoe -> Model.JohnDoe.tmuo
  • AdventureWorks.bim opened by jane.smith -> AdventureWorks.jane.smith.tmuo

Common Patterns

Development Environment Setup

json
{
  "UseWorkspace": true,
  "WorkspaceConnection": "localhost",
  "WorkspaceDatabase": "Dev_AdventureWorks",
  "DataSourceOverrides": {
    "Production SQL": {
      "ConnectionString": "Data Source=dev-sql;Initial Catalog=DevDB"
    }
  }
}

Power BI Service Deployment

json
{
  "Deployment": {
    "TargetConnectionString": "powerbi://api.powerbi.com/v1.0/myorg/MyWorkspace",
    "TargetDatabase": "Sales Model",
    "DeployPartitions": false,
    "DeployModelRoles": true
  }
}

Additional Resources

Reference Files

  • schema/tmuo-schema.json - JSON Schema for validating .tmuo files (temporary location)

Scripts

  • scripts/validate_tmuo.py - Validate TMUO files for schema compliance

External References

Best Practices

  1. Never commit .tmuo files - Add *.tmuo to .gitignore
  2. Use unique workspace database names - Include username and timestamp
  3. Don't share encrypted credentials - They're tied to Windows account
  4. Use data source overrides - Point to dev/test environments
  5. Document expected settings - Create a template README for team