CiAgICA8IS0tIExpbmtlZEluIC0tPgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIF9saW5rZWRpbl9wYXJ0bmVyX2lkID0gIjEyMzUwNzMiOwogICAgICAgIHdpbmRvdy5fbGlua2VkaW5fZGF0YV9wYXJ0bmVyX2lkcyA9IHdpbmRvdy5fbGlua2VkaW5fZGF0YV9wYXJ0bmVyX2lkcyB8fCBbXTsKICAgICAgICB3aW5kb3cuX2xpbmtlZGluX2RhdGFfcGFydG5lcl9pZHMucHVzaChfbGlua2VkaW5fcGFydG5lcl9pZCk7CiAgICA8L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgKGZ1bmN0aW9uKCl7dmFyIHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IilbMF07CiAgICAgICAgICAgIHZhciBiID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CiAgICAgICAgICAgIGIudHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQiO2IuYXN5bmMgPSB0cnVlOwogICAgICAgICAgICBiLnNyYyA9ICJodHRwczovL3NuYXAubGljZG4uY29tL2xpLmxtcy1hbmFseXRpY3MvaW5zaWdodC5taW4uanMiOwogICAgICAgICAgICBzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGIsIHMpO30pKCk7CiAgICA8L3NjcmlwdD4KICAgIDxub3NjcmlwdD4KICAgICAgICA8aW1nIGhlaWdodD0iMSIgd2lkdGg9IjEiIHN0eWxlPSJkaXNwbGF5Om5vbmU7IiBhbHQ9IiIgc3JjPSJodHRwczovL3B4LmFkcy5saW5rZWRpbi5jb20vY29sbGVjdC8/cGlkPTEyMzUwNzMmZm10PWdpZiIgLz4KICAgIDwvbm9zY3JpcHQ+CiAgICA8IS0tIEVuZCBMaW5rZWRJbiAtLT4KICAgIA==
Generic filters
Exact matches only
Search in title
Search in excerpt
Search in content

Berichte fürs Benchmarking (Teil 1)

Beim Benchmarking geht es um das Vergleichen der Performance von Objekten innerhalb einer Vergleichsgruppe (peergroup). In einem früheren Blogbeitrag Benchmarking mit DeltaMaster wurden die Grundlagen zur Modellierung einer Benchmarkinganwendung beschrieben. Nun geht es um die Auswertungen und um den Aufbau der hierzu erforderlichen Benchmarkingberichte. In Anlehnung an ein aktuelles Projekt vermittelt dieser Blogbeitrag einige Ideen zu deren Gestaltung. Hierzu muss manchmal tief in die Flexreport-Trickkiste gegriffen werden. Bereit? Dann geht’s los!

Berichtsanforderungen

Welche Informationen gehören in Benchmarkingberichte? An erster Stelle interessiert sicher, welchen Platz das gerade betrachtete Benchmarkingobjekt innerhalb der Vergleichsgruppe einnimmt. Analog zu Rangfolgen (Rankings) sollte daher der Rang im Hinblick auf die jeweiligen Messgrößen als Wert dargestellt werden. Zudem empfiehlt sich, die Anzeige des Ranges besonders zu formatieren. Auf diese Weise können Ränge von „normalen“ Kennzahlen schon auf den ersten Blick unterschieden werden. Der folgende Screenshot zeigt Ränge, die in runde Klammern eingeschlossen sind und jeweils rechts vom Kennzahlwert angezeigt werden.

2011-08-26_Crew_Potenzialnutzung und Zielgebietstreue

Ob nun Rang (6) als gut oder schlecht zu bewerten ist, hängt natürlich von der Größe der Vergleichsgruppe ab. Daher ist es notwendig, dass sowohl der Name der peergroup als auch die Anzahl der Vergleichsobjekte in Form einer Berichtsüberschrift eingebunden werden.

Sofern eine größere Anzahl von Benchmarkingkennzahlen analysiert werden soll, wünscht sich ein Berichtsempfänger sicher eine Darstellung mit einem Überblick über alle Ränge. Im Sinne eines Profils sollte intuitiv und auf einen Blick erkennbar sein, wie das gerade betrachtete Benchmarkingobjekt in Bezug auf alle Benchmarkingkennzahlen innerhalb der Vergleichsgruppe abschneidet.

Die Zellgrafiken des DeltaMaster liefern hierzu eine ideale Visualisierung, die der DeltaMaster-Kenner meist mit Zeitreihen-Sparklines in Verbindung bringt: die Skala. Grundidee der Skala ist die Bewertung des letzten Wertes einer Datenreihe. Zwischen dem minimalen und dem maximalen Wert einer Datenreihe markiert eine Pfeilspitze die Lage des letzten Wertes aus der Datenreihe. Im Falle der Zeitreihen-Sparklines wäre dies beispielsweise der aktuelle Monat.

Überträgt man die Logik der Skala auf unsere Benchmarkingberichte, so müsste der letzte Wert der Datenreihe der Rang des gerade betrachteten Benchmarkingobjekts sein. Die Pfeilmarkierung zeigt dann dessen Lage innerhalb der peergroup. Werden zur Anzeige mehrerer Benchmarkingkennzahlen mehrere dieser Skalen untereinander angezeigt, erschließt sich dem Leser intuitiv ein Benchmarkingprofil.

Der folgende Screenshot zeigt ein solches Profil. Man erkennt anhand der Markierungen sofort, dass das hier betrachtete Benchmarkingobjekt innerhalb der Vergleichsgruppe durchweg mittelmäßig, bei einem KPI jedoch sehr schlecht abschneidet.

2011-08-26_Crew_My Ranking

Zusammenfassend wären also folgende Grundanforderungen an Benchmarkingberichte zu beachten:

  • Berechnung der Rangposition
  • Information über die peergroup
  • Benchmarkingprofil

Berechnung der Rangposition

In unserer obigen Wunschliste für Benchmarkingberichte steht die Berechnung der Rangposition an erster Stelle. Diese lässt sich durch einen benutzerdefinierten Analysewert RANG_Benchmarkingkennzahl mit Hilfe der RANK-Funktion wie folgt ermitteln.

RANK
      ([Dimension].[Hierarchie].Vergleichsobjekt,
      ORDER({Vergleichsgruppe}, [Measures].Benchmarkingkennzahl, DESC)
      )

Je nach Logik der Benchmarkingkennzahl muss eine ab- oder aufsteigende Sortierung der Vergleichsgruppe erfolgen. Dadurch wird der Rang betriebswirtschaftlich richtig ermittelt. Sofern ein hoher Wert besser als ein niedriger Wert einzustufen ist, erfolgt die Sortierung absteigend (DESC). Ist jedoch ein niedriger Wert besser einzustufen als ein höherer, dann muss eine aufsteigende Sortierung erfolgen (ASC).

Die eingangs vorgeschlagene Formatierung des Ranges als Wert, der von runden Klammern eingeschlossen ist, lässt sich in den Analysewerteigenschaften durch eine benutzerdefinierte Formatierung (#) einstellen.

2011-08-26_Crew_Analysewerteigenschaften

Information über die peergroup

Zur Einordnung und Bewertung der eigenen Ränge muss klar sein, wie groß die Vergleichsgruppe ist. Für den Fall, dass der Anwender zwischen verschiedenen Vergleichsgruppen wählen kann, sollte neben der Objektanzahl auch der Name der gerade ausgewählten Vergleichsgruppe in der Berichtsüberschrift angezeigt werden. Zur Ermittlung der Objektanzahl wird zunächst ein benutzerdefinierter Analysewert Anzahl Objekte benötigt. Dieser zählt die Objekte der Vergleichsgruppe mittels der COUNT-Funktion:

COUNT(
     {Vergleichsgruppe}
     )

Die gesamte Berichtsüberschrift muss mit den Mitteln eines DeltaMaster Flexreports erstellt werden. Hierfür wird der oben definierte Analysewert Anzahl Objekte und der Namen der in der Sicht ausgewählten Vergleichsgruppe als Text {} in den Flexreport eingebunden. Am besten versteckt der Berichtersteller diese beiden Informationen in einen Zellbereich am Rand des Flexreports, da diese später wieder ausgeblendet und somit unsichtbar gemacht werden müssen. Mittels einer Flexreportformel können dann Freitext und Referenzen auf eben diese Flexreportzellen miteinander kombiniert werden, um eine aus dem Vergleichsgruppennamen und der Objektanzahl zusammengesetzte Überschrift zu erzeugen.

2011-08-26_Crew_Cockpit

2011-08-26_Crew_Zelleigenschaften

Profildarstellung

Es erfordert schon ein hohes Maß an Abstraktionsvermögen, um das Konstrukt der Skala nicht auf Zeitreihen, sondern auf Benchmarkingprofile zu übertragen. Daher verlassen wir kurz die Anwendungsebene und steigen eine Etage tiefer in die Technik.

Damit eine Skala angezeigt wird, ist aus technischer Sicht die Definition einer Sparklines erforderlich. In unserem Fall handelt es sich bei den Säulen der Sparklines nicht um Perioden, sondern um die Benchmarkingobjekte. Bei der Zusammenstellung der Objektmenge muss unbedingt beachtet werden, dass sich die Markierung in der Skala stets auf das letzte Objekt der Menge bezieht. Folglich müssen wir das gerade betrachtete Benchmarkingobjekt ans Ende der Objektmenge positionieren.

Als Analysewert verwenden wir den zuvor berechneten Rang, der mittels Referenz von einer Pivottabelle in den Flexreport übernommen wird. Die benutzerdefinierte Sparkline muss dann mittels folgendem MDX-Statement aus den Objekten der Vergleichsgruppe (ggf. ohne das gerade betrachtete Benchmarkingobjekt) und dem gerade betrachteten Benchmarkingobjekt zusammengesetzt werden.

{
 Vergleichsgruppe - [Dimension].[Hierarchie].Benchmarkingobjekt,
 [Dimension].[Hierarchie].Benchmarkingobjekt
}

Basierend auf obiger Definition würde der Flexreport folgendes Ergebnis liefern:

  • Eine Liste der Objekte der Vergleichsgruppe
  • Säulensparklines, welche die Ränge der Objekte der Vergleichsgruppe repräsentieren
  • Den Rang das gerade betrachtete Benchmarkingobjekts, das durch die letzte Säule definiert wird
  • Die Skala, die den Rang des Benchmarkingobjekts in der Vergleichsgruppe markiert

2011-08-26_Crew_KPI

Im Regelfall würde man sich nun wünschen, dass lediglich der Rang des Benchmarkingobjekts und die Skala angezeigt werden. Kein Problem für den Flexreport, denn dies gelingt schnell und einfach durch die Formatierung der Sparklines.

Zunächst sollte der Sparkline-Typ Linie gewählt werden, da diese auf die minimale Länge von 1 Punkt reduziert werden kann und somit kaum Platz in der Flexreportzelle verbraucht. Damit die Linie gänzlich verschwindet, muss als Farbe für die Linie und den Endpunkt noch Weiß gewählt werden. Mit diesen Einstellungen ist im Flexreport neben dem Wert des Ranges nur noch die Skala sichtbar.

2011-08-26_Crew_Zelleigenschaften_2

Bitte beachten Sie im Hinblick auf die Formatierung des Berichts, ob je nach Interpretation der Benchmarkingkennzahl die Überschrift der Skala eine Wertung beinhalten darf. Sollte dies nicht der Fall sein, kann anstelle der wertenden Überschrift „erster … letzter“ auch eine neutrale Bezeichnung „höchster … niedrigster“ verwendet werden.

2011-08-26_Crew_KPI_2

Berücksichtigung mehrerer peergroups

In meinem letzten Blogbeitrag Benchmarking mit DeltaMaster wurde ein Konzept erläutert, um ein Benchmarking mit mehreren Vergleichsgruppen zu realisieren. Hierbei erfolgt die Auswahl der Vergleichsobjekte in Abhängigkeit der gerade ausgewählten peergroup. Auch im Hinblick auf die hier vorgestellten Berichtskonstrukte gilt es zu beachten, dass alle oben skizzierten MDX-Statements bei Verwendung mehrerer Vergleichsgruppen entsprechend erweitert werden müssen. Um beispielsweise den Rang des Benchmarkingobjekte innerhalb einer bestimmten Vergleichsgruppe zu ermitteln, muss die Rangberechnung in eine CASE-Anweisung, welche die gerade ausgewählte peergroup abfragt, eingebettet werden.

CASE


When <view_Vergleichsgruppe> is [Vergleichsgruppe 1] then

     RANK
          ([Dimension].[Hierarchie].Vergleichsobjekt,
               ORDER
               ({Vergleichsgruppe_1}, [Measures].Benchmarkingkennzahl, DESC)
          )


When <view_Vergleichsgruppe> is [Vergleichsgruppe 2] then
     RANK
          ([Dimension].[Hierarchie].Vergleichsobjekt,
               ORDER
               ({Vergleichsgruppe_2}, [Measures].Benchmarkingkennzahl, DESC)
          )
end

Durch diesen Kniff wird vermieden, dass für jede Vergleichsgruppe eigene Analysewerte zur Rangberechnung definiert werden müssen. Gleiches gilt auch für die Berechnung der Anzahl Objekte und für die Definition der Objektmenge zur Anzeige der Skala.