Modelo de objetos tabulares (TOM)

Se aplica a: SQL Server 2016 y versiones posteriores Analysis Services Azure Analysis Services Power BI Premium

El modelo de objetos tabulares (TOM) es una extensión de la biblioteca de cliente de objetos de administración de análisis (AMO) creada para admitir escenarios de programación para los modelos tabulares creados en el nivel de compatibilidad 1200 y versiones posteriores. Al igual que con AMO, TOM proporciona una manera programática de controlar funciones administrativas como la creación de modelos, la importación y la actualización de datos, y la asignación de roles y permisos.

TOM expone metadatos tabulares nativos, como objetos de modelo, tablas, columnas y relaciones . Una vista de alto nivel del árbol del modelo de objetos, que se proporciona a continuación, muestra cómo se relacionan las partes del componente.

Dado que TOM es una extensión de AMO, todas las clases que representan nuevos objetos tabulares se implementan en un nuevo ensamblado de Microsoft.AnalysisServices.Tabular.dll . Las clases de uso general de AMO se movieron al ensamblado Microsoft. AnalysisServices. Core . El código deberá hacer referencia a ambos ensamblados. Vea instalar, distribuir y hacer referencia al modelo de objetos tabulares (Microsoft. AnalysisServices. tabular) para obtener más información.

Actualmente, la API solo está disponible para código administrado en .NET Framework. Para obtener más información acerca de las clases específicas de AMO/TOM, consulte Referencia del espacio de nombres Microsoft. AnalysisServices. Para revisar la lista completa de opciones de programación para los modelos tabulares, incluida la compatibilidad con scripts y lenguajes de consulta, vea programación de modelos tabulares para el nivel de compatibilidad 1200.

Jerarquía del modelo de objetos tabulares

Desde una perspectiva lógica, todos los objetos tabulares forman un árbol, cuya raíz es un modelo, desciendendo de la base de datos. El servidor y la base de datos no se consideran tabulares porque estos objetos también pueden representar una base de datos multidimensional hospedada en un servidor que se ejecuta en modo multidimensional o un modelo tabular en un nivel de compatibilidad inferior que no usa metadatos tabulares para definiciones de objeto.

Con la excepción de AttributeHierarchy, KPI y LinguisticMetadata, cada objeto secundario puede ser un miembro de una colección. Por ejemplo, el objeto de modelo contiene una colección de objetos de tabla (a través de la propiedad tablas ), con cada objeto de tabla que contiene una colección de objetos de columna , etc.

El descendiente de nivel más bajo de cualquier objeto primario de esta jerarquía es un objeto Annotation que se puede usar para extender el esquema opcionalmente siempre que se proporcione el código para controlarlo.

diagrama de jerarquía de objetos

TOM se basa en la infraestructura de AMO, que también admite bases de datos multidimensionales y tabulares en niveles de compatibilidad inferiores a 1200. Esto tiene algunas implicaciones prácticas. Al administrar objetos no especificados en metadatos tabulares (por ejemplo, un servidor o una base de datos), debe aprovechar las partes de la pila de amo existente que describen dichos objetos. Junto con la API heredada se encuentra el concepto de objetos principales y secundarios que proporcionan descripciones detalladas del estado de los objetos detectados desde el servidor, o cuando se guardan en el servidor. La clase MajorObject en el espacio de nombres Microsoft. AnalysisServices expone métodos para Actualizar y Actualizar. Los objetos secundarios solo se actualizan o guardan a través del objeto principal que los contiene.

Por el contrario, cuando se administran objetos que forman parte de metadatos tabulares, como modelo o tabla, se aprovecha una pila tabular completamente nueva. Dentro de esta pila, las actualizaciones son específicas, lo que significa que cada objeto de metadatos, derivado de la clase MetadataObject en el espacio de nombres Microsoft. AnalysisServices. tabular, se puede guardar individualmente en el servidor. Normalmente, se detectaría todo el modelo. A continuación, realice cambios en objetos de metadatos individuales, como tabla o columna. A continuación, llame al método Model. SaveChanges () , que comprende los cambios que ha realizado en el nivel específico, enviando comandos al servidor para actualizar solo los objetos que han cambiado.

TOM y XMLA

En la conexión, TOM usa el protocolo XMLA para comunicarse con el servidor y administrar objetos. Al administrar objetos no tabulares, TOM usa ASSL, la extensión del lenguaje de scripting de Analysis Services de XMLA. Al administrar objetos tabulares, TOM usa el protocolo tabular MS-SSAS-T, también una extensión de XMLA. Para obtener más información, consulte MS-SSAS-T SQL Server Analysis Services documentación del protocolo tabular.

TOM y JSON

Los metadatos tabulares, que se estructuran como documentos JSON, tienen una nueva sintaxis de definición de modelo de objetos y comandos a través del tabular Model scripting Language (TMSL). El lenguaje de scripting usa JSON para el cuerpo de solicitudes y respuestas.

Aunque tanto TMSL como TOM exponen los mismos objetos, tabla, columna , etc., y las mismas operaciones, crear, eliminar, Actualizar, Tom no utiliza TMSL en la conexión. TOM usa en su lugar el protocolo tabular MS-SSAS-T, como se indicó anteriormente.

Como usuario, puede elegir entre administrar las bases de datos tabulares a través de la biblioteca TOM desde el programa de C# o el script de PowerShell, o mediante un script de TMSL ejecutado a través de PowerShell, SQL Server Management Studio (SSMS) o un trabajo Agente SQL Server.

La decisión de usar uno u otro se desconectará a los detalles de sus requisitos. La biblioteca TOM proporciona una funcionalidad más completa en comparación con TMSL. En concreto, mientras que TMSL solo ofrece operaciones generales en el nivel de base de datos, tabla, partición o rol, TOM permite operaciones con un grano mucho más preciso. Para generar o actualizar modelos mediante programación, necesitará el alcance completo de la API en la biblioteca TOM.