Important
La CLI de Tabular Editor se encuentra en vista previa pública limitada. Se ofrece para su evaluación con una cuenta de Tabular Editor; no se requiere ninguna licencia durante la vista previa. Los comandos, las opciones y las salidas pueden cambiar antes de la disponibilidad general. La versión preliminar deja de funcionar después de 2026-09-30. No recomendamos usar la CLI en pipelines de CI/CD de producción durante la vista previa. Consulta nuestro acuerdo de licencia.
En esta página se enumeran las limitaciones conocidas de la CLI de Tabular Editor (te) para que puedas planificar en consecuencia y evitar errores habituales. Se actualiza con cada versión; si encuentras un problema que no figura aquí, abre una incidencia en el repositorio público TabularEditor/CLI.
Note
Las limitaciones se agrupan por área. Cada entrada describe la restricción y, cuando existe, una solución alternativa o la alternativa recomendada compatible con la CLI.
Scripts
La CLI ejecuta C# Scripts (te script) sobre el mismo objeto Model que usas en Tabular Editor 2 y 3, pero funciona como un host de consola sin interfaz gráfica. Todo lo que dependa de una interfaz de usuario de Windows Forms, de la selección del Explorador TOM o de un servicio en ejecución del lado de la interfaz (registro de macros, DAX Formatter en línea, Analizador VertiPaq en tiempo real) se comporta de forma diferente; por lo general, queda vacío, no hace nada o devuelve un error.
| Limitación |
Notas / Solución alternativa |
System.Windows.Forms no se ha cargado |
La CLI usa una compilación multiplataforma de TOMWrapper que elimina todo el código acoplado a WinForms; el ensamblado de WinForms nunca se carga en el AppDomain. Los scripts que hacen referencia a tipos de System.Windows.Forms (MessageBox, Form, selectores de archivos, cuadros de diálogo personalizados, …) no se pueden compilar. Reestructura cualquier interacción con la interfaz de usuario en argumentos del script, variables de entorno o stdin. |
Selected.<Plural> devuelve un enumerable vacío |
Selected.Tables, Selected.Measures, Selected.Columns, Selected.Hierarchies, etc. no devuelven nada en la CLI: no hay error de compilación ni de ejecución; simplemente no hay filas. Sustituye por búsquedas explícitas: Model.AllMeasures.Where(...), Model.Tables["Sales"].Measures, o pasa rutas de objetos mediante te script --args. |
Selected.<Singular> genera un error en tiempo de ejecución |
Selected.Table, Selected.Measure, Selected.Column, Selected.Hierarchy, etc. devuelven un error porque requieren exactamente un objeto seleccionado de ese tipo y la selección de la CLI siempre está vacía. Haz referencia al objeto directamente, por ejemplo, Model.Tables["Sales"]. |
Selected.ActivePerspectives y Selected.ActiveCulture |
Siempre devuelven una colección vacía y null, respectivamente. Establece la perspectiva o la configuración regional explícitamente en el script si es necesario. |
Los cuadros de diálogo Select<Object> lanzan NotSupportedException |
SelectTable, SelectColumn, SelectMeasure, SelectObject, SelectObjects (y todas las sobrecargas) devuelven el siguiente error: "Los cuadros de diálogo de selección de objetos … no están disponibles en los scripts de la CLI. Preselecciona el objeto por nombre o por ruta antes de ejecutar el script." Resuelve los objetivos de antemano a partir de los argumentos del script, la configuración o consultando el modelo. |
Info / Warning / Error / Output escriben en la consola |
Estos siguen funcionando, pero se envían a stdout/stderr en lugar de abrir un cuadro de diálogo. Nunca bloquean ni muestran un aviso para "ignorar más ventanas emergentes". Se pueden usar con seguridad en CI. |
ShowPrompt(...) siempre devuelve Cancel |
No es posible realizar una confirmación interactiva. Decide la respuesta de antemano mediante argumentos del script o la configuración. |
SuspendWaitForm / WaitFormVisible no hacen nada |
El indicador giratorio de "Please wait" es un elemento de la interfaz de TE3. WaitFormVisible es una bandera configurable sin efecto Visual, y SuspendWaitForm se ignora silenciosamente; los scripts existentes siguen compilando. |
host.Macro(...) / CustomAction(...) lanzan un error |
La CLI no carga %APPDATA%/TabularEditor3/MacroActions.json, por lo que invocar una macro desde dentro de un script devuelve un error. Inserta la lógica de la macro en línea o llama directamente al archivo de script subyacente de la macro. |
table.GetCardinality() / column.GetTotalSize() devuelven 0 |
Los auxiliares de cardinalidad de VertiPaq dentro del script no tienen un VPA en vivo en el host de la CLI. Para obtener estadísticas de VPA, carga explícitamente un VPAX y usa host.Vpa.*, o ejecuta te vertipaq. |
Best Practice Analyzer
| Limitación |
Notas / Solución alternativa |
| Las fuentes de reglas de BPA deben ser URL HTTPS o rutas de archivos locales |
Solo se aceptan las URL https:// y las rutas de archivo locales sin esquema. http:// se reconoce, pero se rechaza deliberadamente en tiempo de carga con un error claro; como las reglas de BPA son expresiones de reglas ejecutables, obtenerlas a través de un canal no autenticado supondría un riesgo de manipulación. Otros esquemas de URL (file://, ftp://, …) no se admiten. Se aplica tanto a te bpa run --rules como a la lista de reglas configurada mediante te config set. |
La validación de las URL de las reglas se realiza en el gate, no en te config set |
Un error tipográfico como http:// lo acepta te config set y solo sale a la luz cuando BPA se ejecuta realmente. Después de editar las fuentes de reglas configuradas, ejecuta te bpa run (o te validate) una vez para comprobar que cada URL se carga correctamente. |
--rules no desactiva las reglas integradas |
Cuando se pasa te bpa run --rules <path-or-url>, las reglas proporcionadas sustituyen las entradas de bpa.rules y TE_BPA_RULES para esa invocación, pero los valores predeterminados integrados siguen cargándose también. Para ejecutar solo el archivo de reglas explícito, pasa también --no-defaults. |
No hay ninguna opción por invocación para omitir la configuración de bpa.rules |
Una vez configurado bpa.rules, cada te bpa run carga esas reglas además de las integradas. Actualmente no hay ninguna opción para omitir los archivos de reglas configurados en una sola ejecución. Solución alternativa: pasa --rules <path-or-url> explícitamente; esta opción sustituye por completo bpa.rules y TE_BPA_RULES para esa invocación. |
Validación
| Limitación |
Notas / Solución alternativa |
te validate no puede corregir automáticamente las infracciones de Code Action |
te validate genera un Report de infracciones de Code Action, pero no ofrece ningún parámetro de la CLI para aplicar la corrección sugerida. Aplica la corrección en Tabular Editor 3, o usa te bpa run --fix para el subconjunto de Code Actions que se solapan con las reglas de BPA. |
E/S del modelo
| Limitación |
Notas / Solución alternativa |
--serialization no puede combinar una serialización con un contenedor PBIP |
La opción --serialization en te save trata bim, tmdl, te-folder y pbip como mutuamente excluyentes, por lo que actualmente no se puede generar un contenedor PBIP alrededor de un modelo serializado con TMSL (.bim). Guarda TMDL dentro de un contenedor PBIP, o guarda .bim fuera de un contenedor PBIP. |
Autenticación
| Limitación |
Notas / Solución alternativa |
| Solo una identidad almacenada en caché por método de autenticación |
La CLI almacena en caché una identidad UPN (interactiva) y una identidad SPN (entidad de servicio) a la vez. Cambiar a otro usuario o inquilino con el mismo método de autenticación requiere te auth logout y después volver a ejecutar te auth login, lo que invalida la caché anterior. |
Entrada en la línea de comandos
| Limitación |
Notas / Solución alternativa |
| Las rutas de objetos DAX con espacios deben ir entre comillas del shell |
Cuando el nombre de una tabla o columna contiene espacios, toda la referencia al objeto DAX debe ir entre comillas del shell desde el terminal: te get "'My Table'[My Column]". Sin las comillas externas, el shell divide la ruta en varios argumentos y el análisis sintáctico falla. Dentro de te interactive no se necesitan comillas del shell porque el REPL recibe la entrada sin procesar antes de que el shell la divida en argumentos. |
Paridad con TE2
| Limitación |
Notas / Solución alternativa |
te schemacheck todavía no se ha implementado |
La opción -SC / -SCHEMACHECK de TE2 no tiene hoy por hoy ningún equivalente en te; la detección de deriva del esquema con respecto a las Data source de origen está prevista para una versión futura. Consulta Migración desde la línea de comandos de TE2 para ver la tabla completa de equivalencias de opciones entre TE2 y te. |
Enviar un Report de una limitación no documentada
Si algún comportamiento te sorprende y no aparece aquí, abre una incidencia en TabularEditor/CLI e incluye el comando que ejecutaste, la salida que viste y la salida que esperabas. Las limitaciones confirmadas se añaden a esta página en la siguiente versión.
Páginas relacionadas