Miriam Funke

Mit dem Release der Reporting Services 2008 R2 wurde ein bisher weniger beachtetes Feature auf dem Markt gebracht, die sogenannten Atom-Datafeeds. Diese bieten die Möglichkeit auf die gerenderten Informationen der Berichte zuzugreifen und beispielsweise in Excel auf einfache Weise abrufbar zu machen.

Was ist ein SSRS Atom-Datafeed?

Mit der Atom-Datafeed-Erweiterung können Datenströme aus einen Bericht exportiert und Excel abgerufen werden. Bei einem Datafeed handelt es sich um eine XML-Datei mit einem konsistenten Tabellenformat und veränderbaren Daten. Die Atom-Unterstützung in SSRS und Excel geben dem Benutzer noch mehr Flexibilität als je zuvor. Es können nicht nur Datafeeds von SSRS-Berichte für die Verwendung in Excel erzeugt, sondern auch Atom-konforme Feeds in Excel verwendet werden.

Die Atom-Datafeeds haben den Vorteil, dass sie auf öffentlichen Standards basieren und deshalb auf unterschiedlichster Weise verwendet werden können. Eine Anwendung stellt den Feed auf Anforderung bereit, indem Daten aus beliebigen Datenquellen abgerufen und anschließend in Echtzeit für Clientanwendungen oder Benutzer veröffentlicht werden, die sie anfordern.

Als Analysis Services-Funktion stellen Datafeeds ein nützliches Tool dar, um Unternehmensdaten unmittelbar zur Verfügung zu stellen. Wenn das Unternehmen über Datenquellen verfügt, auf die nicht einfach über den Clientdatenanbieter zugegriffen werden kann, kann ein Atom-Datendienst für diese Datenquelle erstellt und die Daten in einem Feedformat verfügbar gemacht werden.

Doch wie genau kann ich die Atom-Datafeeds in Excel nutzen? Ein Excel-Bericht wird mit einer Datafeed-Verbindung erstellt. Der Anwender öffnet die Excel-Datei und die Daten werden automatisch in das richtige Format aktualisiert. Wenn Parameterwerte geändert werden müssen, muss lediglich die .atomsvc-Datei aktualisiert werden und die Arbeitsmappe filtert automatisch die Daten auf der Grundlage der aktualisierten Parameterauswahl.

So weit, so gut. Aber schauen wir uns die einzelnen Bestandteile dieser Lösung etwas genauer an. Die Rendering-Erweiterung der Reporting Services generiert ein Atom Service Document Datei (.atomsvc-Datei), in dem die aus einem Bericht und aus den Datenbereichen in diesem Bericht verfügbaren Datafeeds aufgeführt sind. Dabei handelt es sich mindestens um eine einfache URL zum Datendienst, der einen Feed erzeugt, oder aber um eine komplexe URL, die Auswahl- und Filterparameter enthält. Um das ganze etwas zu verdeutlichen, schauen wir uns einen einfachen Bericht mit den Top 5 Produkten an. Neben den Titel sind für unsere Betrachtung die Tabelle mit der Produktauflistung und dem dazu passenden Diagramm von Bedeutung.

Abbildung 1Beispielbericht

Diese .atomsvc-Datei listet mindestens einen Datafeed für jeden Datenbereich in einem Bericht. Abhängig von der Art der Datenbereich und der Daten, die dieser zeigt, können Reporting Services mehrere Datenströme aus einem Datenbereich generieren. Für unseren Bericht werden genau zwei Datenströme – einen für die Tabelle und einen für das Diagramm – gespeichert.

Die .atomsvc-Datei hat also folgenden Inhalt:

<?XML version=1.0encoding=utf-8standalone=yes?>
 
<service xmlns:atom=http://www.w3.org/2005/Atom xmlns:app=http://www.w3.org/2007/app xmlns=http://www.w3.org/2007/app>
    <workspace>
        <atom:title>Product_Top5</atom:title>
        <collection href=http://schulung/ReportServer?%2FTest_Reports%2FProduct_Top5&amp;rs%3ACommand=Render&amp;rs%3AFormat=ATOM&amp;rc%3AItemPath=Product_Table>
            <atom:title>Product_Table</atom:title>
        </collection>
        <collection href=http://schulung/ReportServer?%2FTest_Reports%2FProduct_Top5&amp;rs%3ACommand=Render&amp;rs%3AFormat=ATOM&amp;rc%3AItemPath=Product_Chart.>
            <atom:title>Product_Chart</atom:title>
        </collection>
    </workspace>
</Service>

Wenn das .atomsvc-Datei erstellt wird, wird eine eindeutige Kennung für jeden Datafeed erstellt und die URL kann verwenden werden, um auf den Inhalt der Datafeed zu zugreifen. Für unseren Beispielbericht wird direkt nach dem Workspace der Name des Berichts Product_Top5 (atom:title) genannt. Für jeden Datafeed besteht ein Collection-Element, welches die URL des Atoms Datafeed enthält. Über den Browser kann die URL (Achtung: &amp; durch & ersetzen) aufgerufen werden. Es wird eine .atom-Datei im XML-Format zu Verfügung gestellt.

<?xml version=1.0 encoding=utf-8 standalone=yes?>
<feed xmlns:d=http://schemas.microsoft.com/ado/2007/08/dataservices xmlns:m=http://schemas.microsoft.com/ado/2007/08/dataservices/metadata xmlns=http://www.w3.org/2005/Atom>
<title type=text></title>
    <id>uuid:331f4748-6a5e-45c4-bc09-a0255a086f97;id=1</id>
    <updated>2015-06-26T20:38:19Z</updated>
    <entry>
        <id>uuid:331f4748-6a5e-45c4-bc09-a0255a086f97;id=2</id>
        <title type=text></title>
        <updated>2015-06-26T20:38:19Z</updated>
        <author />
        <content type=application/xml>
            <m:properties>
                <d:productCode>S10_1678</d:productCode>
                <d:productName>1969 Harley Davidson Ultimate Chopper</d:productName>
                <d:productDescription>This replica features working kickstand, front suspension, gear-shift Lever, footbrake lever, drive chain, wheels and steering. All parts are particularly delicate due to theirprecise scale and require special care and Attention.</d:productDescription>
                <d:buyPrice m:type=Edm.Int32>49</d:buyPrice>
            </m:properties>
        </content>
    </entry>
    [..]
    <entry>
        <id>uuid:331f4748-6a5e-45c4-bc09-a0255a086f97;id=6</id>
        <title type=text></title>
        <updated>2015-06-26T20:38:19Z</updated>
        <author />
        <content type=application/xml>
            <m:properties>
                <d:productCode>S10_4757</d:productCode>
                <d:productName>1972 Alfa Romeo GTA</d:productName>
                <d:productDescription>„Features include: Turnable front wheels; steering function; detailed interior; detailed engine; opening hood; opening trunk; opening doors; and detailed chassis.“</d:productDescription>
                <d:buyPrice m:type=Edm.Int32>86</d:buyPrice>
            </m:properties>
        </content>
    </entry>
</feed>

Ein Datafeed enthält zwei Abschnitte: Header und Daten. Die Atom-Spezifikation definiert die Elemente in den beiden Abschnitten. Der Header enthält Informationen wie das für die Dataenfeeds zu verwendende Zeichencodierungsschema. Der Datenabschnitt enthält ein <entry>-Element für jede verwendete Zeile der Datenquelle. Für unsere Tabelle mit den Top 5 Produkten wird also für jede Zeile ein entsprechendes <entry>-Element angelegt.

Verwenden eines Atom-Datafeed um Daten aus einem Bericht in Excel zu streamen

Wie bereits erwähnt, können SSRS-Berichte als Atom-Datafeeds in andere Anwendungen verwendet werden. Befindet sich der Bericht auf dem Report Server so kann über das Icon In Datenfeed exportieren die benötigte .atomsvc-Datei generiert werden.

 

 

In Excel kann eine Verbindung zu den Atom-Datafeed über From OData-Verbindungen oder über PowerPivot hergestellt werden. Werfen wir einen Blick darauf, wie einfache und leistungsfähige Excel für diese Datafeeds sein kann.

In Excel kann als externe Datenquelle „From OData Data Feeds“ die .atomsvc-Datei ausgewählt werden. Über den Tabellenimport Assistenten werden die Datenbereiche des ursprünglichen Berichtes, welche die Datafeeds enthalten, als Tabelle ausgewählt. Hier finden wir auch unsere beiden Datenströme als einzelne Tabellen wieder.

Eine Datenverbindungsdatei wird für die ausgewählten Tabellen angelegt:

Die Daten werden als Tabelle oder Pivot-Tabelle in den Excel-Client importiert. Dort können sie, wie gewohnt, bearbeitet werden.