Share via


Konzepte von CSDL

Die konzeptionelle Schemadefinitionssprache (CSDL) basiert auf Entity Data Framework, einer Abstraktion zum Darstellen von verschiedenen Datentypen, die es ermöglicht, dass unterschiedliche Datasets programmgesteuert aufgerufen, abgefragt oder exportiert werden können. CSDL wird verwendet, um tabellarische Modelle für die Berichterstellung darzustellen, da sie besonders gut geeignet ist, um datengesteuerte Anwendungen zu definieren.

In diesem Abschnitt wird erläutert, wie das Entity Data Model auf tabellarische Modelle angewendet wird, und Beispiele bereitgestellt, wie ein Modell in CSDL dargestellt wird.

Die Beispiele zur Veranschaulichung dieser Konzepte wurden aus der Beispieldatenbank AdventureWorks, verfügbar auf CodePlex, entnommen. Weitere Informationen zu den Beispielen finden Sie in den AdventureWorks-Beispielen für SQL Server.

Struktur eines Modells in CSDL

Ein CSDL-Dokument, in dem ein Berichtsmodell und seine Daten beschrieben werden, beginnt mit der xsd-Anweisung, gefolgt von der Definition eines Modells.

Das Modell ist ein Namespace, der die folgenden Hauptentitäten, Zuordnungen und Eigenschaften enthält:

  • Der EntityContainer listet die Tabellen im Modell auf.

  • Jede Tabelle wird mit dem EntityContainer als EntitySet aufgeführt.

  • Jede Beziehung zwischen zwei Tabellen wird als AssociationSet beschrieben, der die Beziehungsendpunkte und die Beziehungsrollen definiert.

  • Das EntityType-Element wird erweitert, damit BISM weitere Details zu den Tabellen und den darin enthaltenen Spalten bereitstellt, einschließlich Eigenschaften zu Sortierungs- und Anzeigezwecken.

  • Das Measure-Element definiert Berechnungen, die im Modell verwendet werden können. Ein Measure kann in einen KPI umgewandelt werden, indem mithilfe des neuen KPI-Elements ein Satz besonderer Anzeigeattribute hinzugefügt wird.

  • Es gibt keine separate Darstellung von Perspektiven. Spalten und Tabellen, die nicht in einer Perspektive enthalten, sind in der CSDL vorhanden, aber sind mit dem Hidden-Attribut gekennzeichnet.

Entitäten, EntitySets und EntityTypes

Die Idee einer Entität in Entity Data Framework wird erweitert, um Spalten und Tabellen aus dem Datenmodell darzustellen. Der folgende Auszug zeigt die Liste der EntitySet-Elemente in einem einfachen Modell, das nur drei Tabellen enthält.

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

Das EntitySet enthält keine Informationen zu Spalten oder Daten in der Tabelle. Die ausführliche Beschreibung der Spalten und ihrer Eigenschaften wird im EntityType-Element bereitgestellt.

Das EntityType-Element für jede Entität (Tabelle) umfasst eine Auflistung von Eigenschaften, die die Schlüsselspalte, den Datentyp und die Länge der Spalte, NULL-Zulässigkeit, das Sortierverhalten usw. definieren. Im folgenden CSDL-Auszug werden z. B. drei Spalten in der Customer-Tabelle beschrieben. Die erste Spalte ist eine spezielle ausgeblendete Spalte, die intern vom Modell verwendet wird.

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

Um die Größe des generierten CSDL-Dokuments einzuschränken, werden Eigenschaften, die mehr als einmal in einer Entität vorkommen, durch einen Verweis auf eine vorhandene Eigenschaft angegeben, damit die Eigenschaft nur einmal für den EntityType aufgeführt werden muss. Die Clientanwendung kann den Wert der Eigenschaft abrufen, indem sie den EntityType sucht, der eine Entsprechung für den OriginEntityType ist.

Beziehungen

In Entity Data Framework werden Beziehungen als Zuordnungen zwischen Entitäten definiert.

Zuordnungen haben immer genau zwei Enden, die jeweils auf ein Feld oder eine Spalte in einer Tabelle zeigen. Daher sind mehrere Beziehungen zwischen zwei Tabellen möglich, wenn die Beziehungen verschiedene Endpunkte haben. Den Endpunkten der Zuordnung wird ein Rollenname zugewiesen, der angibt, wie die Zuordnung im Kontext des Datenmodells verwendet wird. Ein Beispiel für einen Rollennamen könnte ShipTo (Versand an) sein, der auf eine Kunden-ID angewendet wird, die sich auf die Kunden-ID in einer Orders-Tabelle mit Bestellungen bezieht.

Die CSDL-Darstellung des Modells enthält auch Attribute in der Zuordnung, die bestimmen, wie die Entitäten einander in Hinsicht auf die Multiplizität der Zuordnung zugeordnet werden. Multiplizität gibt an, ob das Attribut oder die Spalte am Endpunkt einer Beziehung zwischen Tabellen auf der 1-Seite oder auf der n-Seite einer 1:n-Beziehung ist. Es gibt keinen separaten Wert für 1:1-Beziehungen. Die BISM-Erweiterungen für CSDL unterstützen eine Multiplizität von 0 (das bedeutet, dass die Entität nicht zugeordnet ist) oder 0..1, was entweder eine 1:1-Beziehung oder eine 1:n-Beziehung bedeutet.

Im folgenden Beispiel wird die CSDL-Definition einer Beziehung zwischen den Tabellen "Date" und "ProductInventory" dargestellt, wobei die zwei Tabellen über die DateAlternateKey-Spalte verknüpft sind. Standardmäßig ist der Name von AssociationSet der vollqualifizierte Name der Spalten, die an der Beziehung beteiligt sind. Sie können dieses Verhalten jedoch ändern, wenn Sie das Modell erstellen, und ein anderes Namensformat verwenden.

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

Visualisierungs- und Navigationseigenschaften

Ein wichtiger Teil der Erweiterungen zu Entity Data Framework für tabellarische Modellierung sind die Eigenschaften zum Definieren der Darstellung in der Berichtsebene und zum Navigieren der Beziehungen zwischen Entitäten. Wenn Sie ein Datenmodell erstellen, sehen Sie es in der Regel nicht als wichtig an, die Sortierung oder Gruppierung der Daten zu steuern oder einen Standardwert anzugeben, in der Annahme, dass die Clientanwendung die Reihenfolge und andere Details der Darstellung angibt. Tabellarische Analysis Services-Modelle werden jedoch für die Integration in den Power View-Berichtserstellungsclient entworfen und schließen Eigenschaften ein, die die Darstellung der Entitäten aus dem Datenmodell auf der Berichtsentwurfsoberfläche unterstützen.

Erweiterungen für Visualisierung umfassen Attribute zum Angeben der Standardaggregation, die mit numerischen Daten verwendet werden soll, zum Angeben, dass ein Textfeld auf eine URL eines Bilds zeigt, oder zum Angeben des Felds, das verwendet wurde, um das aktuelle Feld zu sortieren.

Namenseigenschaften und Namenskonventionen

Die CSDL-Spezifikation setzt voraus, dass jede Entität über einen eindeutigen Namen und einen Bezeichner verfügt, die als Schlüssel verwendet werden können. Außerdem können einige Entitäten über zu Anzeigezwecken verwendete Beschriftungen und Kontextnamen verfügen, die sich abhängig davon ändern, wo die Entität verwendet wird.

Das Dokumentationselement bietet Berichts-Designern die Möglichkeit, eine Beschreibung der Entität einzurichten, um geschäftlichen Benutzern die Bedeutung der Daten verstehen zu helfen. Einige Entitäten lassen auch ein oder mehrere Anmerkungsattribute zu, die zusätzliche Metadaten zum Gebrauch durch die Anwendung oder die Clients bereitstellen.

Wenn Sie mit den Analysis Services-Tools ein Modell generieren, folgen die Namen, die für Objekte erstellt werden, den Analysis Services-Konventionen für Objektbenennung und Namenseindeutigkeit. Da jedoch CSDL ein Teil von Entity Data Framework ist, welches erfordert, dass Namen die Konventionen für C#-Bezeichner einhalten, nimmt der Server, wenn er die CSDL für ein Modell erstellt, die innerhalb des Analysis Services-Schemas verwendeten Namen und erstellt automatisch neue Objektnamen, die den CSDL-Anforderungen entsprechen. In der folgenden Tabelle werden die Vorgänge, durch die die neuen Namen generiert werden, beschrieben.

Regel

Aktion

Beispiel

Keine unzulässigen Zeichen

Unzulässige Zeichen werden durch Unterstriche ersetzt.

Beispiel befindet sich in Bearbeitung

Namen müssen eindeutig sein

Wenn zwei Zeichenfolgen gleich sind, wird an eine ein Unterstrich plus eine Zahl angefügt, um sie eindeutig zu machen

Beispiel befindet sich in Bearbeitung

Beschriftungen und Qualifizierer haben beide Übersetzungen, und für eine bestimmte Sprache kann das eine oder das andere vorhanden sein. Das bedeutet, dass in Fällen, wo ein Qualifizierer und ein Name oder ein Qualifizierer und eine Beschriftung verkettet sind, die Zeichenfolgen in zwei verschiedenen Sprachen vorliegen können.

Siehe auch

Konzepte

Einführung in die CSDL-Erweiterungen für Tabellenmodelle