Archivo de opciones de usuario del modelo tabular (.tmuo)
Tabular Editor 3 presenta un nuevo archivo basado en JSON para almacenar preferencias específicas del desarrollador y del modelo. Este archivo se denomina Tabular Model User Options y utiliza la extensión .tmuo.
Cuando abres un modelo desde el disco, el archivo se crea junto a él y se nombra según el modelo y tu nombre de usuario de Windows. Tabular Editor busca un archivo con ese nombre cada vez que se carga un modelo desde el disco.
| Lo que abriste | Archivo de opciones de usuario |
|---|---|
SpaceParts.bim, o cualquier archivo .bim / .pbit / database.json |
SpaceParts.<UserName>.tmuo, junto a él |
Un archivo model.tmdl o database.tmdl |
model.<UserName>.tmuo, junto a él |
Una carpeta que contiene database.json |
database.<UserName>.tmuo, en esa carpeta |
| Una carpeta que contiene archivos de modelo en Tabular Model Definition Language (TMDL) | model.<UserName>.tmuo, en esa carpeta |
TMDL siempre usa el prefijo model para mantener la continuidad con las versiones anteriores a database.tmdl.
Para un modelo abierto a través de una conexión, en lugar de desde el disco, no hay ningún lugar junto al modelo donde colocar el archivo, así que se guarda por servidor y por base de datos en %LocalAppData%\TabularEditor3\UserOptions\.
La opción Crear archivo de opciones de usuario (.tmuo) en @preferencias determina si se crea o no el archivo para un modelo nuevo.
Important
El archivo .tmuo contiene preferencias específicas del usuario y, por lo tanto, no debe incluirse en un entorno compartido de control de versiones. Si usas Git para el control de versiones, asegúrate de incluir la extensión .tmuo en tu archivo .gitignore.
Contenido del archivo
El archivo es JSON y todas las propiedades son opcionales. Tabular Editor solo crea uno cuando hay algo que guardar, así que un archivo real contiene solo algunos de los bloques siguientes, no todos. Si no hay nada que guardar, no se escribe ningún archivo.
Un archivo mínimo, para un modelo que no hace nada más que conectarse a una base de datos de Workspace:
{
"UseWorkspace": true,
"WorkspaceConnection": {
"ConnectionString": "data source=localhost",
"EncryptedCredentials": "AQAAANCMnd8BFdERjHoAwE..."
},
"WorkspaceDatabase": "WorkspaceDB_MyUser_20260915"
}
Propiedades de nivel superior
| Propiedad | Tipo | Se escribe cuando |
|---|---|---|
UseWorkspace |
Booleano | Ya has respondido a la pregunta sobre Workspace para este modelo. Mientras no esté presente, Tabular Editor te lo pregunta cada vez que se carga el modelo. |
WorkspaceConnection |
Cadena u objeto | Se ha configurado una conexión a Workspace. Forma de objeto cuando la cadena de conexión incluye una contraseña. |
WorkspaceConnectionAuthMode |
Cadena | Heredado y solo cuando no es Integrated. Ahora el modo de autenticación viene implícito en la cadena de conexión. |
WorkspaceDatabase |
Cadena | Se ha configurado un nombre de base de datos para Workspace. |
Deployment |
Objeto | Se ha ejecutado el Asistente de implementación para este modelo. |
DataSourceOverrides |
Objeto | Se ha definido al menos una anulación de Data source. |
TableImportSettings |
Objeto | Al menos un Data source tiene configuración de importación. |
RefreshOverrides |
Objeto | Se ha definido al menos un perfil de reemplazo de actualización. |
AIConsent |
Objeto | Legado. Se lee cuando está presente; nunca se vuelve a escribir. |
Permissions |
Objeto | Se ha concedido al menos una concesión de IA por modelo. |
Aparecen en ese orden.
Base de datos del Workspace
UseWorkspacedecide si Tabular Editor se conecta a una base de datos del Workspace al cargar el modelo. La base de datos del Workspace se sobrescribe con los metadatos del archivo cargado o de la estructura de carpetas.WorkspaceConnectiones la instancia de Analysis Services o el punto de conexión XMLA de Power BI en el que se implementa la base de datos del Workspace.WorkspaceDatabasees el nombre de esa base de datos del Workspace. Debe ser único para cada desarrollador y cada modelo, ya que la idea es que cada desarrollador tenga el suyo.
Sobrescrituras del Data source
DataSourceOverrides se usa para proporcionar a la base de datos del Workspace detalles de conexión distintos a los del archivo del modelo, de modo que Analysis Services actualice desde un origen diferente al indicado por el modelo.
| Propiedad | Tipo | Se escribe cuando |
|---|---|---|
ImpersonationMode |
Cadena | Distinto de Default. Uno de Default, ImpersonateAccount, ImpersonateAnonymous, ImpersonateCurrentUser, ImpersonateServiceAccount, ImpersonateUnattendedAccount. |
Username |
Cadena | Se establece. |
ConnectionString |
Objeto cifrado | Al establecerse. |
Password |
Objeto cifrado | Al establecerse. |
AccountKey |
Objeto cifrado | Al establecerse. Se usa para orígenes de almacenamiento de blobs. |
PrivacySetting |
Cadena | Al establecerse. |
Una anulación cuya Data source ya no exista en el modelo se elimina la próxima vez que se escriba el archivo, y otra cuya Data source se haya cambiado de nombre seguirá ese cambio.
Configuración de importación de tablas
TableImportSettings se usa al ejecutar Importar tabla o actualizar esquema para explorar las tablas y vistas disponibles y detectar los cambios en el esquema de origen.
| Propiedad | Tipo | Se escribe cuando |
|---|---|---|
ServerType |
Cadena | Siempre. Uno de Sql, Oracle, Odbc, OleDb, Snowflake, Dataflow, PostgreSql, MySql, MariaDb, Db2, Databricks, OneLake. |
Options |
Objeto de cadenas | La colección no está vacía. |
UserId |
Cadena | Configurado. |
Password |
Objeto cifrado | Configurado, y elegiste guardarlo. |
Provider |
Cadena | ServerType es OleDb. |
PasswordKey, UserIdKey |
Cadena | ServerType es OleDb y el valor correspondiente está configurado. |
Server |
Cadena | ServerType no es Odbc y está configurado. |
ServerKey, DatabaseKey |
Cadena | ServerType no es Sql y el valor está configurado. |
Database |
Cadena | Configurado. |
Authentication |
Cadena | ServerType es Sql, OleDb o Databricks. Uno de Sql, WindowsIntegrated, AadInteractive, AadPassword, AadIntegrated, AadServicePrincipal, AccessToken, OAuth. |
Encrypt |
Booleano | Se establece en cualquiera de los dos casos. |
Dsn |
Cadena | Se establece. Se usa para ODBC. |
RowLimitClause, IdentifierQuoting |
Número | No tienen sus valores predeterminados. |
Schema |
Cadena | Se establece. |
Options es donde se guarda todo lo específico de un proveedor, como cadenas de texto sin formato: un Warehouse de Snowflake es Options.warehouse; un Workspace de OneLake es Options.workspaceid. Las propiedades …Key son los nombres de las claves de la cadena de conexión, como PWD, no valores secretos.
Password es el único valor cifrado aquí. UserId, Server, Database, Dsn y todo lo que hay en Options se almacena como texto sin formato, así que trata el archivo como confidencial incluso cuando no contenga ninguna contraseña. Un token de acceso de Power BI se almacena como Password y está cifrado.
Implementación
Deployment contiene la última configuración que usó el Asistente de implementación para este modelo. Las siete opciones booleanas siempre se escriben una vez que existe el bloque, tanto si son verdaderas como falsas:
| Propiedad | Tipo | Se escribe cuando |
|---|---|---|
DeployDataSources |
Booleano | Siempre |
DeployPartitions |
Booleano | Siempre |
DeployRefreshPolicyPartitions |
Booleano | Siempre |
DeployModelRoles |
Booleano | Siempre |
DeployModelRoleMembers |
Booleano | Siempre |
DeploySharedExpressions |
Booleano | Siempre |
DeployLinguisticMetadata |
Booleano | Siempre |
TargetConnectionString |
Cadena u objeto | Siempre; null si no está configurado. Forma de objeto cuando la cadena de conexión incluye una contraseña. |
TargetDatabase |
Cadena | Siempre; null si no está configurado. |
TargetCredentials |
Objeto | Se han establecido tanto un nombre de usuario como una contraseña. |
Anulaciones de actualización
RefreshOverrides se indexa por el nombre del perfil, y esa clave es el único lugar donde se guarda el nombre. Cada perfil contiene una única matriz Overrides que describe qué cambia el perfil cuando se ejecuta. Consulta Perfiles de sobrescritura de actualización para ver qué hacen los perfiles y cómo definirlos.
"RefreshOverrides": {
"Nightly": {
"Overrides": [
{
"scope": { "table": "Sales" },
"partitions": [
{
"originalObject": { "table": "Sales", "partition": "Sales-2025" },
"source": { "query": "SELECT * FROM dbo.FactSales WHERE Year = 2025" }
}
]
}
]
}
}
Permisos de IA por modelo
Permissions registra las concesiones de permisos de IA que se aplican solo a este modelo, y se escribe cuando respondes Permitir para este modelo en una tarjeta de permisos del Asistente de IA.
"Permissions": {
"Grants": { "ModelMetadata": "Write", "ModelData": "Read" },
"LastGrantedAt": "2026-09-15T08:12:44.117Z"
}
Grants contiene una entrada por cada recurso al que has concedido permisos: ModelMetadata, ModelData, Bpa, Documents o Macros, cada uno establecido en Deny, Read o Write. Esto eleva tu concesión de permisos vigente para el chat mientras este modelo esté abierto. El servidor MCP solo lee los permisos globales, así que nada de esto le llega.
Cómo se cifran las credenciales
Todo lo sensible se cifra con la API de protección de datos de Windows bajo tu propia cuenta de usuario, así que un archivo que contiene datos cifrados no se puede compartir con otro usuario ni mover a otro equipo. Aparecen tres formas, según lo que se esté protegiendo:
Una cadena de conexión sin contraseña no se cifra en absoluto y permanece como una cadena JSON en texto plano, por eso WorkspaceConnection aparece de ambas formas en la práctica.
Si no se puede descifrar un valor, por ejemplo porque el archivo procede de otro usuario, el valor se lee como vacío en lugar de hacer que falle la carga.
Cuando no se puede leer el archivo
Un modelo se abre con o sin un archivo .tmuo.
Si el archivo no se puede deserializar, por ejemplo porque se editó manualmente y quedó como JSON no válido, Tabular Editor muestra una advertencia titulada Error al cargar el archivo de opciones de usuario (.tmuo), que incluye el error subyacente, y luego abre el modelo con las opciones predeterminadas. No se pierde nada del modelo en sí; pierdes la configuración que contenía el archivo, y en el siguiente guardado se escribirá uno nuevo.
Pasos a seguir
- @Workspace-mode