Share via


Concepts CSDL

Le langage CSDL (Conceptual Schema Definition Language) est basé sur l'infrastructure de données d'entités (Entity Data Framework), qui est une abstraction pour représenter différents types de données de façon à activer les jeux de données disparates pour qu'ils soient accédés, interrogés ou exportés par programme. Le langage CSDL est utilisé pour représenter les modèles tabulaires en vue de la création de rapports car il est particulièrement approprié à la définition d'applications pilotées par les données.

Cette section explique comment l'Entity Data Model s'applique aux modèles tabulaires, et fournit des exemples de représentation d'un modèle en CSDL.

Les exemples utilisés pour illustrer ces concepts proviennent de l'exemple de base de données AdventureWorks, disponible sur Codeplex. Pour plus d'informations sur les exemples, consultez Exemples Adventure Works pour SQL Server.

Structure d'un modèle en CSDL

Document CSDL qui décrit un modèle de rapport. Ses données commencent par l'instruction XSD, suivie de la définition d'un modèle.

Le modèle est un espace de noms qui contient les entités, les associations et les propriétés principales suivantes :

  • EntityContainer répertorie les tables contenues dans le modèle.

  • Chaque table apparaît avec EntityContainer comme EntitySet.

  • Chaque relation entre deux tables est décrite comme un AssociationSet définissant les points de terminaison de relation et les rôles de relation.

  • L'élément EntityType est étendu pour que BISM fournisse des détails supplémentaires sur les tables et les colonnes qu'il contient, y compris les propriétés de tri et d'affichage.

  • L'élément Measure définit les calculs qui peuvent être utilisés dans le modèle. Une mesure peut être transformée en indicateur de performance clé en ajoutant un jeu d'attributs d'affichage spécial, à l'aide du nouvel élément KPI.

  • Il n'y a pas de représentation distincte des perspectives. Les colonnes et les tables qui ne sont pas incluses dans une perspective sont présentes dans le langage CSDL mais marquées avec l'attribut Hidden.

Entités, EntitySets et EntityTypes

La notion d'entité dans l'infrastructure de données d'entité Entity Data Framework est étendue pour représenter des colonnes et des tables de données. L'extrait suivant affiche la liste des éléments EntitySet dans un modèle simple contenant uniquement trois tables.

<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> />

L'EntitySet ne contient pas d'informations sur les colonnes ou les données de la table. La description détaillée des colonnes et leurs propriétés est fournie dans l'élément EntityType.

L'élément EntityType pour chaque entité (table) inclut une collection de propriétés qui définissent la colonne clé, le type de données et la longueur de la colonne, la possibilité de valeur NULL, le comportement de tri, etc. Par exemple, l'extrait CSDL suivant décrit trois colonnes dans la table Customer. La première colonne est une colonne masquée spéciale utilisée en interne par le modèle.

<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>

Pour limiter la taille du document CSDL généré, les propriétés qui apparaissent plus d'une fois dans une entité sont spécifiées par une référence à une propriété existante, afin que la propriété soit répertoriée une seule fois pour l'EntityType. L'application cliente peut obtenir la valeur de la propriété en recherchant l'EntityType qui représente l'OriginEntityType.

Relations

Dans l'infrastructure de données principales, les relations sont définies comme des associations entre les entités.

Les associations ont toujours exactement deux terminaisons, chacune pointant sur un champ ou colonne dans une table. Par conséquent, plusieurs relations sont possibles entre deux tables, si les relations ont des points de terminaison différents. Un rôle de nom est affecté aux points de terminaison de l'association, et indique comment l'association est utilisée dans le contexte du modèle de données. Un exemple de nom de rôle peut être ShipTo, lorsqu'il est appliqué à un ID de client qui est associé à l'ID de client dans une table Orders.

La représentation CSDL du modèle contient également les attributs de l'association qui déterminent la façon dont les entités sont mappées entre elles en termes de pluralité de l'association. La pluralité indique si l'attribut ou la colonne au point de terminaison d'une relation entre des tables se trouve du côté « un » d'une relation ou du côté « plusieurs ». Il n'y a aucune valeur distincte pour les relations un-à-un. Les extensions BISM pour CSDL prennent en charge la pluralité 0 (ce qui signifie que l'entité n'est associée à aucun élément) ou bien 0..1, ce qui indique soit une relation un-à-un, soit une relation un-à-plusieurs.

L'exemple suivant représente la définition de CSDL d'une relation entre les tables, Date et ProductInventory, où les deux tables sont jointes sur la colonne DateAlternateKey. Notez que, par défaut, le nom de l'AssociationSet est le nom complet des colonnes impliquées dans la relation. Toutefois, vous pouvez modifier ce comportement lorsque vous concevez le modèle et utiliser un format de nom différent.

<AssociationSet Name="ProductInventory_Date_DateKey" Association="Model.ProductInventory_Date_DateKey">
              <End EntitySet="ProductInventory" />
              <End EntitySet="Date" />
              <bi:AssociationSet />
            </AssociationSet>

Propriétés de visualisation et de navigation

Une partie importante des extensions de l'infrastructure de données d'entités Entity Data Framework pour la modélisation tabulaire sont les propriétés qui définissent la présentation dans la couche de rapports et la navigation dans les relations entre les entités. En règle générale, lorsque vous créez un modèle de données, il n'est pas important de contrôler la façon dont les données sont ordonnées ou regroupées, ou quelle sera la valeur par défaut, car l'application cliente est supposée spécifier l'ordre et d'autres détails de présentation. Toutefois, les modèles tabulaires de Analysis Services sont conçus pour assurer l'intégration avec le client de création de rapports Power View et incluent des propriétés et des attributs qui prennent en charge la présentation des entités du modèle de données dans l'aire de conception du rapport.

Les extensions de visualisation incluent des attributs qui spécifient l'agrégation par défaut utilisée avec des données numériques, qui indiquent qu'un champ de texte pointe vers une URL ou une image ou qui spécifient le champ utilisé pour trier le champ actuel.

Propriétés Name et conventions d'affectation des noms

La spécification CSDL garantit que chaque entité a un nom et un identificateur unique qui peuvent être utilisés comme clés. En outre, certaines entités peuvent avoir des légendes utilisées pour l'affichage et des noms contextuels qui changent selon l'endroit où l'entité est utilisée.

L'élément Documentation permet aux concepteurs de rapports de fournir une description de l'entité, pour aider les utilisateurs professionnels à comprendre la signification des données. Certaines entités permettent aussi d'utiliser un ou plusieurs attributs Annotation, qui fournissent des métadonnées supplémentaires pour la consommation par l'application ou par les clients.

Lorsque vous générez un modèle avec les outils Analysis Services, les noms créés pour les objets suivent les conventions d'Analysis Services relatives à l'affectation de noms et à leur unicité. Toutefois, étant donné que le langage CSDL fait partie de l'infrastructure de données d'entités Entity Data Framework, qui exige que les noms adhèrent aux conventions applicables aux identificateurs C#, lorsque le serveur crée le code CSDL pour un modèle, il prend les noms utilisés dans le schéma Analysis Services et crée automatiquement de nouveaux noms d'objets conformes aux spécifications CSDL. Le tableau suivant décrit les opérations grâce auxquelles les nouveaux noms sont générés.

Règle

Action

Exemple

Aucun caractère interdit

Les caractères interdits sont remplacés par le trait de soulignement.

Exemple en chantier

Les noms doivent être uniques

Si deux chaînes sont identiques, l'une d'entre elles est rendue unique en ajoutant le trait de soulignement plus un nombre

Exemple en chantier

Les légendes et les qualificateurs sont traduits et, pour une langue donnée, une traduction ou bien une autre peut être présente. Cela signifie que dans les cas où un qualificateur et un nom ou un qualificateur et une légende sont concaténés, les chaînes peuvent être dans deux langues différentes.

Voir aussi

Concepts

Introduction aux extensions CSDL pour les modèles tabulaires