Conceptos de CSDL
El lenguaje de definición de esquemas conceptuales (CSDL) se basa en Entity Data Framework, que es una abstracción para representar distintos tipos de datos de una forma que permita el acceso, la consulta o la exportación de conjuntos de datos diversos mediante programa. CSDL se usa a fin de representar los modelos tabulares para informes porque resulta muy adecuado para definir aplicaciones controladas por datos.
En esta sección se explica cómo se aplica el modelo de datos de entidades a los modelos tabulares y se proporcionan ejemplos de cómo un modelo se representa en CSDL.
Los ejemplos usados para ilustrar estos conceptos se han tomado de la base de datos de ejemplo AdventureWorks, disponible en Codeplex. Para obtener más información acerca de los ejemplos, vea Ejemplos de Adventure Works para SQL Server.
Estructura de un modelo en CSDL
Un documento CSDL que describe un modelo de informe y sus datos comienza con la instrucción XSD, seguida de la definición de un modelo.
El modelo es un espacio de nombres, que contiene las siguientes entidades, asociaciones y propiedades principales:
Con EntityContainer se enumeran las tablas del modelo.
Cada tabla aparece con EntityContainer como EntitySet.
Cada relación entre dos tablas se describe como conjunto AssociationSet que define los extremos y roles de la relación.
El elemento EntityType se amplía para que BISM proporcione detalles adicionales sobre las tablas y las columnas que contienen, incluidas las propiedades para fines de ordenación y visualización.
El elemento Measure define los cálculos que se pueden usar en el modelo. Una medida se puede convertir en KPI al agregar un conjunto de atributos de presentación especiales, mediante el nuevo elemento KPI.
No hay representación independiente de las perspectivas. Las columnas y tablas que no están incluidas en una perspectiva se encuentran en el CSDL pero se marcan con el atributo Hidden .
Entidades, EntitySets y EntityTypes
La noción de una entidad en Entity Data Framework se amplía para representar columnas y tablas del modelo de datos. El extracto siguiente muestra la lista de elementos EntitySet en un modelo simple que solo contiene tres tablas.
<EntityContainer Name="SimpleModel">
<EntitySet Name="DimCustomer"EntityType="SimpleModel.DimCustomer">
<bi:EntitySet />
</EntitySet>
<EntitySet Name="DimDate" EntityType="SimpleModel.DimDate">
<bi:EntitySet />
</EntitySet>
<EntitySet Name="DimGeography" EntityType="SimpleModel.DimGeography">
<bi:EntitySet />
</EntitySet> />
EntitySet no contiene información acerca de las columnas o los datos de la tabla. La descripción detallada de las columnas y sus propiedades se proporcionan en el elemento EntityType.
El elemento EntityType para cada entidad (tabla) incluye una colección de propiedades que definen la columna de clave, el tipo de datos y la longitud de la columna, la nulabilidad, el comportamiento de ordenación, etc. Por ejemplo, el extracto de CSDL siguiente describe tres columnas de la tabla Customer. La primera columna es una columna oculta especial que usa el modelo internamente.
<EntityType Name="Customer">
<Key>
<PropertyRef Name="RowNumber" />
</Key>
<Property Name="RowNumber" Type="Int64" Nullable="false">
<bi:Property Hidden="true" Contents="RowNumber"
Stability="RowNumber" />
</Property>
<Property Name="CustomerKey" Type="Int64" Nullable="false">
<bi:Property />
</Property>
<Property Name="FirstName" Type="String" MaxLength="Max" FixedLength="false">
<bi:Property />
</Property>
Para limitar el tamaño del documento CSDL que se genera, las propiedades que aparecen varias veces en una entidad se especifican mediante una referencia a una propiedad existente, de modo que la propiedad solo es necesario indicarla una vez para EntityType. La aplicación cliente puede obtener el valor de la propiedad mediante la búsqueda del elemento EntityType que coincide con OriginEntityType.
Relaciones
En Entity Data Framework, las relaciones se definen como asociaciones entre entidades.
Las asociaciones siempre tienen exactamente dos extremos, uno que apunta a un campo o columna de una tabla. Por lo tanto, son posibles múltiples relaciones entre dos tablas, si las relaciones tienen extremos distintos. Un nombre de rol se asigna a los extremos de la asociación, e indica como se usa la asociación en el contexto del modelo de datos. Un ejemplo de nombre de rol podría ser ShipTo, cuando se aplica a un identificador de cliente que está relacionado con el identificador de cliente de una tabla Orders.
La representación de CSDL del modelo también contiene atributos sobre la asociación que determinan el modo en que las entidades se asignan entre sí en términos de multiplicidad de la asociación. La multiplicidad indica si el atributo o la columna en el extremo de una relación entre tablas está en el lado uno de una relación o en el lado de varios. No hay ningún valor independiente para las relaciones uno a uno. Las extensiones BISM para la multiplicidad de compatibilidad de CSDL de 0 (lo que significa que la entidad no está asociada a nada) o 0..1, lo que significa una relación de uno a uno o una relación de uno a varios.
El ejemplo siguiente representa la definición de CSDL de una relación entre las tablas Date y ProductInventory, donde las dos tablas están combinadas por la columna DateAlternateKey. Observe que, de forma predeterminada, el nombre de AssociationSet es el nombre completo de las columnas que intervienen en la relación. No obstante, puede cambiar este comportamiento al diseñar el modelo, para usar otro formato de nomenclatura.
<AssociationSet Name="ProductInventory_Date_DateKey" Association="Model.ProductInventory_Date_DateKey">
<End EntitySet="ProductInventory" />
<End EntitySet="Date" />
<bi:AssociationSet />
</AssociationSet>
Propiedades de visualización y navegación
Una parte importante de las extensiones de Entity Data Framework para el modelado tabular son las propiedades para definir la presentación en el nivel de informe y para navegar por las relaciones entre las entidades. Normalmente, cuando se crea un modelo de datos, no se considera importante controlar cómo se ordenan o agrupan los datos, o cuál podría ser el valor predeterminado, en el suposición de que la aplicación cliente especificara la ordenación y otros detalles de presentación. No obstante, los modelos tabulares de Analysis Services están diseñados para la integración con el cliente de informes de Power View, e incluyen propiedades y atributos que admiten la presentación de entidad desde el modelo de datos en la superficie de diseño de informes.
Las extensiones para la visualización incluyen atributos para especificar la agregación predeterminada que se usará con datos numéricos, para indicar que un campo de texto apunta a una dirección URL de una imagen o para especificar el campo que se emplea para ordenar el campo actual.
Propiedades de nombre y convenciones de nomenclatura
La especificación CSDL indica que cada entidad tiene un nombre único y un identificador que se puede usar como clave. Además, algunas entidades pueden tener títulos que usan para la visualización y nombres contextuales que cambian en función de dónde se usa la entidad.
El elemento Documentation ofrece a los diseñadores de informes la oportunidad de indicar una descripción de la entidad para ayudar a los usuarios empresariales a comprender el significado de los datos. Algunas entidades también permiten uno o varios atributos Annotation, que proporcionan metadatos adicionales para su consumo por parte de la aplicación o los clientes.
Al generar un modelo, las herramientas de Analysis Services, los nombres que se crean para los objetos siguen las convenciones de Analysis Services para la nomenclatura de objetos y la unicidad de los nombres. No obstante, debido a que CSDL forma parte de Entity Data Framework, lo que requiere que los nombres cumplan las convenciones de los identificadores C#, cuando el servidor crea el CSDL para un modelo, toma los nombres usados en el esquema de Analysis Services y crea automáticamente nuevos nombres de objeto que cumplen los requisitos de CSDL. En la tabla siguiente se describen las operaciones por las que se generan los nuevos nombres.
Regla |
Acción |
Ejemplo |
---|---|---|
Sin caracteres prohibidos |
Los caracteres prohibidos se reemplazan por el carácter de subrayado. |
Ejemplo en construcción |
Los nombres deben ser únicos |
Si dos cadenas son iguales, una se convierte en única anexando un carácter de subrayado además de un número |
ejemplo en construcción |
Los títulos y los calificadores tienen traducciones y, para un determinado idioma, uno u otro podría estar presente. Esto significa que en caso de que se concatenen un calificador y un nombre o un calificador y un título, las cadenas podrían estar en dos idiomas distintos.
Vea también
Conceptos
Introducción a las extensiones de CSDL para los modelos tabulares