Verwendung des tabellarischen Modells als Datenquelle für Reporting Services

27. Juli 2012

Neu in Microsoft SQL Server 2012 ist das BI-Semantikmodell (BI Semantic Model, BISM) für Analysis Services. Von diesem BISM gibt es zwei unterschiedliche Implementierungen: das Tabellarische (tabulare) und das Multidimensionale (multidimensional) Modell.

Das multidimensionale Modell verwendet das Konzept von Cubes und Dimensionen, die auf einer OLAP-Engine basieren. Dieses Modell wurde vom Unified Dimensional Model (UDM) abgeleitet, dass in früheren Versionen der Analysis Services (vor 2012) zum Einsatz kam. Die Abfragesprache für dieses Modell ist die Multi Dimensional eXpression (MDX). Für den Zugriff auf dieses Modell steht in Reporting Services 2012 eine entsprechende Dataextension zur Verfügung – Microsoft SQL Server Analysis Services.

Das tabellarische Modell baut auf dem Konzept von Tabellen und Beziehungen auf, die auf einer “In-Memory”-Engine, mit dem Namen xVelocity (vorher VertiPaq), basieren. Dabei werden die Daten für dieses Modell im Arbeitsspeicher gehalten und dadurch ist der Zugriff darauf wesentlich schneller, als ein Zugriff auf ein multidimensionales Modell (OLAP). Die Abfragesprache für das tabellarische Modell ist die Data Analysis eXpression (DAX), die aus Excel-Formeln abgeleitet wurde. Standardmäßig wird Reporting Services im nativen Modus jedoch mit keiner speziellen Datenerweiterung ausgeliefert, die es ermöglicht, auf das tabellarische Modell per DAX zuzugreifen. So ist nur ein Zugriff über MDX mit der Dataextension “Microsoft SQL Server Analysis Services” möglich. Dies hat jedoch einige Nachteile in Hinblick auf Usability und Performance.

Bei der Analyse von Power View-Berichten bin ich zufällig darauf gestoßen, dass in diesen Berichten ein Datenquellentyp “DAX” verwendet wird. Nachdem ich mir die verfügbaren Datenerweiterungen in SharePoint angesehen habe, konnte ich sehen, dass dort die Datenerweiterung “DAX” registriert ist. Nun habe ich mir gesagt, wenn der Datenquellentyp im integrierten SharePoint-Modus der Reporting Services funktioniert, gibt es eigentlich keinen Grund, warum dies nicht auch im nativen Modus funktioniert. Also habe ich dies ausprobiert!

Dieser Artikel soll Ihnen zeigen, wie Sie den Zugriff auf Analysis Services im tabellarischem Modell mit DAX umsetzen können.

Damit Sie innerhalb von Reporting Services einen neuen Datenquellentyp verwenden können, müssen Sie diesen auf Ihrer Umgebung zuerst registrieren. Diese Registrierung muss einerseits für Visual Studio auf dem Entwicklercomputer erfolgen (damit Sie entsprechende Datenquellen anlegen können) und andererseits muss dieser Datenquellentyp auf dem Berichtsserver bekannt gemacht werden (damit Sie Berichte verwenden können, die auf diesen Datenquellentyp basieren). Bevor Sie Änderungen an den folgenden Konfigurationsdateien vornehmen, sollten Sie Sicherungskopien erstellen – man kann ja nie wissen.

  • Registrierung der Datenerweiterung in Visual Studio 2010:
    Öffnen Sie die Datei "C:Program Files (x86)Microsoft Visual Studio 10.0Common7IDEPrivateAssembliesRSReportDesigner.config" mit dem Texteditor und suchen darin das Tag <DATA> fügen Sie unterhalb dieses Tags folgende Zeile ein:
    <Extension Name="DAX" Type="Microsoft.ReportingServices.DataExtensions.AdoMdDaxConnection,Microsoft.ReportingServices.DataExtensions"/>
  • Registrierung der Datenerweiterung in Reporting Services 2012:
    Öffnen Sie die Datei "C:Program FilesMicrosoft SQL ServerMSRS11.MSSQLSERVERReporting ServicesReportServer
    sreportserver.config" mit dem Texteditor und suchen darin das Tag <DATA> fügen Sie unterhalb dieses Tags folgende Zeile ein:
    <Extension Name="DAX" Type="Microsoft.ReportingServices.DataExtensions.AdoMdDaxConnection,Microsoft.ReportingServices.DataExtensions"/>

Nachdem Sie die Anpassungen an den Konfigurationsdateien vorgenommen haben, starten Sie die SQL Server Data Tools (mit BI-Erweiterung) und erstellen ein neues Reporting Service-Projekt. Legen Sie eine neue freigegebene Datenquelle an. Als Datenquellentyp wählen Sie das “Microsoft BI-Semantikmodell für Power View” aus:

clip_image002

Sollte dieser Datenquellentyp nicht vorhanden sind, muss bei der Registrierung in der Visual Studio-Konfigurationsdatei etwas schief gegangen sein. Kontrollieren Sie deshalb die Konfigurationsdatei und starten Visual Studio neu.

Als Verbindungszeichenfolge verwenden Sie folgende Zeichenfolge:
“Data Source=<Servername>[<Instancename>];Initial Catalog=<Datenbankname>

Zum Bearbeiten der Verbindungszeichenfolge steht Ihnen leider kein Assistent zur Verfügung, sodass Sie diesen Text nicht automatisch generieren lassen können.

Wenn Sie das BI-Semantikmodell in SharePoint abgelegt haben, müssen Sie als Data Source die entsprechende URL zu dem Modell in SharePoint eintragen. Das sieht dann so aus:
Data Source=/sites//.xlsx">/sites//.xlsx">http://<sharePoint server>/sites/<pfad>/<Name des BISM-Modells>.xlsx;

Unter Anmeldeinformationen wählen Sie „Windows Authentifizierung (integrierte Sicherheit)“ aus.

Danach können Sie ein neues Dataset erstellen. In dem folgenden Beispiel handelt es sich um ein freigegebenes Dataset, das damit auch berichtsübergreifend zur Verfügung steht.

clip_image004

Verwenden Sie für das Dataset die Datenquelle, die Sie vorher definiert haben. Als Abfrage (vom Typ Text) können Sie jetzt Ihre DAX-Abfrage eintragen. In der aktuellen Version steht Ihnen für die DAX-Abfrage leider kein Programm zur Verfügung, dass Sie bei der Erstellung der Abfrage unterstützt. Doch bei Interesse können Sie sich an die SDX AG wenden – wir unterstützen Sie gerne.

Eine Alternative zu dem oben beschriebenen Weg stellt der Vorschlag von Chris Webb dar (http://cwebbbi.wordpress.com/2011/09/06/detail-level-reporting-with-dax/). In diesem Beispiel verwendet er die Standard Analysis Services Datenerweiterung. Darin benutzt er eine DMX-Abfrage, um eine DAX-Abfrage abzusetzen. Sicherlich nicht schön, aber auch dieser Weg funktioniert.

Nachdem Sie die Dataset erstellt haben, können Sie dann basierend auf dieses Dataset einen neuen Bericht erstellen. Dort stehen Ihnen die gleichen Möglichkeiten zur Verfügung wie mit jeder anderen Datenquelle.
Die Abfrage ist nur ein Beispiel (und nur ein kleiner Teil davon) aus meinem Testbereich. Wenn Sie mehr Informationen zu der Abfrage-Syntax der DAX wissen möchten, finden Sie bei Microsoft einige Informationen unter http://msdn.microsoft.com/de-de/library/gg492201
Leider fasst sich Microsoft sehr kurz mit der Beschreibung dieser Syntax und geizt mit Beispielen, deshalb habe ich mich entschlossen in einem der nächsten Flurfunkeinträge dieses Thema genauer zu erklären.

Fazit

Die Verwendung von DAX innerhalb von Reporting Services ist sehr einfach – ein wenig Konfiguration und schon kann es losgehen. Sollten Sie noch Fragen zu diesem Thema haben, stehen meine Kollegen und ich Ihnen gerne zur Verfügung.