Die Paginated Reports ergänzen das Power BI Universum um einen Berichtstyp, der für den Druck bzw. die Ausgabe nach PDF optimiert ist und typischerweise mehrere (A4) Seiten umfasst. Die Paginated Reports sind aus den früheren SQL Server Reporting Services (SSRS) gewachsen und haben in Power BI ein großes, neues Anwendungsfeld erhalten. Funktion und Terminologie der Paginated Reports wurden stark an Power BI herangeführt, im Kern ist die SQL Herkunft aber nach wie vor leicht zu erkennen und erfordert daher stellenweise auch etwas Technikverständnis.
Den Power BI Editor haben wir im Teil 1 dieser Serie vorgestellt und im Teil 2 haben wir gezeigt, wie Reports mit dem Power BI Report Builder wesentlich leistungsfähiger gestaltet werden können. In diesem abschließenden Teil 3 zeigen wir, wie Paginated Reports mittels Parameter dynamisch gefiltert werden können.
1. Ausgangssituation und Zielsetzung
Wir setzen dort fort, wo wir im Teil 2 dieser Serie geendet haben. Anstelle der beiden hard-codierten Filter für die Periode in der DAX Query sollen zwei Dropdowns bereitgestellt werden, mit denen die Anwender des Reports die Periode frei wählen können.

2. Parameter definieren
Parameter werden ganz einfach über das Kontextmenü des Ordners Parameter in der Berichtsdaten Pane angelegt …

… und definiert:
- Name = technischer Name des Parameters
- Eingabeaufforderung = Anzeigename in der Report Ansicht
- Datentyp = Zahl, Text, Datum, usw.
- Leeren Wert zulassen = relevant für Datentyp Text
- NULL-Wert zulassen = der Report wird auch ohne Auswahl dieses Parameters gerendert (optionaler Parameter)
- Mehrere Werte zulassen = Mehrfachselektion im Dropdown zulassen

Im Abschnitt Verfügbare Einträge werden die Einträge im späteren Dropdown definiert – vorerst werden diese Einträge hard-codiert und später werden wir diese dynamisch aus der Datenquelle belegen:
- Bezeichnung = Anzeige im Dropdown
- Wert = (technischer) Wert für die Filterung der Datenquelle

Im Abschnitt Standardwerte werden die Default Werte für das Dropdown definiert:

Nach der Anlage des Parameters für das Jahr und analog eines zweiten Parameters für das Monat werden diese unmittelbar im Parameter Bereich der Berichtsdaten Pane und des Editors – dort mit dem Text aus dem Feld Eingabeaufforderung und noch ausgegraut – angezeigt:

In der Berichtsvorschau sind die beiden Parameter bereits voll funktionsfähig als Dropdowns enthalten. Allerdings haben diese beiden Selektionen mangels Verknüpfung noch keine Wirkung auf unseren Paginated Report:

3. Parameter als dynamischen Filter anwenden
Parameter können ganz allgemein für die Interaktion mit dem End User eingesetzt werden, der häufigste Anwendungsfall dürfte aber die dynamische Filterung des Berichts sein. Dabei kann der Filter auf ein ganzes Dataset angewendet werden oder gezielt auf einzelne Visualisierungsobjekte – je nach Bedarf.
3.1 Filterbedingung aus der DAX Query entfernen
Im ersten Schritt werden die beiden Zeilen für die hard-codierte Filterung der DAX Query entfernt:

3.1 Parameter als Filter auf das Dataset anwenden
Jetzt können die Parameter als Filter auf das Dataset eingesetzt werden:
- Ausdruck = Spalte im Dataset, auf die der Filter angewendet werden soll
- Datentyp = wird automatisch abgeleitet aus der selektierten Spalte
- Operator =, <, >, usw.
Tipp: wir verwenden den Operator „In“ anstelle von „=“, um auch für den Fall der Erweiterung des Parameters zur Mehrfachselektion vorbereitet zu sein - Wert = selektierter Wert im Parameter Dropdown = Filterkriterium

Der selektierte Wert des Parameters wird am besten über den Expression Editor durch Auswahl des entsprechenden Parameters in der Auswahlliste im unteren Bereich des Editors verformelt:

Die Formel aus dem Expression Editor wird in den Dataseteigenschaften im Syntax [@Parametername] dargestellt. Der Filter für das Monat wird analog dazu definiert:

Die beiden Parameter filtern jetzt den Report, am besten in der Berichtsvorschau testen:

3.2 Parameter als Filter auf das Visualisierungsobjekt anwenden
Auf die gleiche Art und Weise können die Parameter alternativ auch als Filter auf Ebene des Visualisierungsobjekts eingebunden werden:

Die Definition funktioniert genau gleich wie zuvor beim Dataset gezeigt:

4. Parameter in Textbox anzeigen
Parameter Selektionen können ergänzend zur Filterung auch zur Anzeige in Berichtsfeldern – bspw. in der Textbox des Headers – verformelt werden. Dazu den Expression Editor der Textbox starten …

Die Verformelung ist manchmal mühsam, da Datenypen ggfs. konvertiert werden müssen, aber ansonsten funktioniert die Formelsprache in den Paginated Reports ähnlich zu bereits bekannten Konzepten wie Excel, Power Query oder auch VBA:

Fertig:

5. Parameter dynamisch aus der Datenquelle befüllen
Die Inhalte der beiden Parameter wurden ja eingangs hard-codiert, für den Praxiseinsatz müssen die Einträge aber idR dynamisch aus dem Datenbestand abgeleitet werden. Dazu ist es empfehlenswert, je Parameter ein eigenes Dataset mit der entsprechenden DAX Query anzulegen.
Hier das Dataset zur Abfrage der Jahre …

… und dessen Einbindung in die Rubrik Verfügbare Werte des Parameters Parameter_Jahr:

Die Standardwerte des Parameters sollten ebenfalls dynamisch aus der Datenquelle abgeleitet werden. Dazu könnte ein weiteres Dataset angelegt werden, es sollte aber auch die Verformelung über den Expression Editor möglich sein. Das weitere Dataset erscheint mir übertrieben und die Verformelung ist mir bisher nicht gelungen, daher belasse ich hier die hard-codierten Werte:

Zum Abschluß analog dazu das Dataset zur Abfrage der Monate …

… und dessen Einbindung in die Rubrik Verfügbare Werte des Parameters Parameter_Monat:

Hinweis: die Spalte Monat ID wird hier sicherheitshalber im Dataset für eine eventuell benötigte Sortierung mitgeführt, die Einträge im Parameter Dropdown erfolgt aber ohnehin nicht in alphabetischer Reihenfolge sondern in der Abfragereihenfolge.
6. Fertiger Report mit Filter Parameter
Der fertige Paginated Report im Power BI Cloud Service sieht aus End User Perspektive folgendermaßen aus:

Fazit
Die Erweiterung der Paginated Reports um Parameter zur dynamischen Filterung gehört zum absoluten Standard eines Paginated Reports und sollte in den allermeisten Anwendungsfällen umgesetzt werden.