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

Parent-Child-Dimensionen nach Attribut-Dimension filtern

In OLAP-Datenbanken haben wir die Möglichkeit, Dimensionsattribute als Dimensionen bzw. Hierarchien zu modellieren. Damit können Berichte nach Attribut-Ausprägungen gefiltert werden, als ob es sich um eine eigene Dimension handelt. Das Modellieren von Attribut-Dimensionen ist nicht nur bei regulären Dimensionen möglich, sondern auch bei Parent-Child-Dimensionen. In diesem Blog zeigen wir anhand eines Beispiels, wie Berichte nach einer solchen Attribut-Dimension gefiltert werden, wenn Datensätze nur für einzelne Ebenen in der Parent-Child-Dimension geführt werden. 

In unserem Szenario ist die Organisationsstruktur eines Unternehmens als Parent-Child-Dimension und eine Measure-Group modelliert, die die Anzahl der Mitarbeiter zählt. Die Mitarbeiter befinden sich auf der untersten Ebene der Organisation und stellen die Blattelemente der Dimension dar. Die Measure-Group „AnzahlMitarbeiter“ besitzt nur Datensätze für die Blattelemente.

Parent-Child-Dimensionen nach Attribut-Dimension filtern - Beispiel: Organisationsstruktur eines Unternehmens und die Anzahl der Mitarbeiter

Abbildung 1: Organisationsstruktur

 

Die Elemente der Dimension „Organisation“ können vom Typ Konzern, Filiale, Abteilung, Unterabteilung oder Mitarbeiter sein. Diese Information wird als Attribut „OrganisationselementTyp“ modelliert.

Organisationsstruktur als Parent-Child-Hierarchie mit Attribut „OrganisationselementTyp“

Abbildung 2: Organisationsstruktur mit Attribut „OrganisationselementTyp“

 

Das Attribut „OrganisationselementTyp“ wird als Attribut-Dimension bzw. 1-Level-Dimension definiert. Damit wird „OrganisationselementTyp“ in der Filterleiste von DeltaMaster sichtbar und kann als Filter verwendet werden.

Der Bericht lässt sich nun beispielsweise nach dem Element Abteilung filtern, wie in Abbildung 3 dargestellt. Allerdings kann man hierbei sehen, dass zwar nach der Dimension gefiltert wurde, aber die Kennzahl „AnzahlMitarbeiter“ überall leer ist (sofern leere Zeilen im Bericht eingeblendet werden).

Filtern nach „OrganisationselementTyp“ im Bericht ergibt leere Zeilen im Bericht zur Attribut-Dimension

Abbildung 3: Filtern nach „OrganisationselementTyp“ im Bericht

 

Bei der Analyse des MDX-Ausdrucks des Berichts sehen wir, dass durch das Filtern nach „OrganisationselementTyp“ eine WHERE-Bedingung in der MDX-Abfrage generiert wird. Da die Measure-Group „AnzahlMitarbeiter“ nur Daten für Blattelemente bzw. Elemente von Typ Mitarbeiter enthält und die Attribut-Dimension nicht hierarchisch, sondern als eine flache Liste aufgebaut ist, wird kein Wert für Elemente außer dem „OrganisationselementTyp“ Mitarbeiter gefunden.

SELECT 
	{[Measures].[AnzahlMitarbeiter]} ON AXIS(0),
	{Generate([Organisation].[Organisation_PC].Levels(0).AllMembers,
Descendants([Organisation].[Organisation_PC].CurrentMember,
[Organisation].[Organisation_PC].Levels(4),SELF_AND_BEFORE))} 
	DIMENSION PROPERTIES [Organisation].[Organisation_PC].[Level 01].[ElementTyp] ON AXIS(1)
FROM [Chair]
WHERE ([Organisation].[OrganisationselementTyp].[OrganisationselementTyp].&[Abteilung])

Lösung durch Einsatz einer Filter-Kennzahl

Es wird eine Filter-Kennzahl für die „AnzahlMitarbeiter“, fixiert auf alle Typen, erstellt.

Filter-Kennzahl in DeltaMaster für die Anzahl der Mitarbeiter zur Darstellung in der Attribut-Dimension "OrganisationTyp" einstellen

Abbildung 4: Filter-Kennzahl für die Anzahl der Mitarbeiter

 

Die Filter-Kennzahl wird entlang der Dimension „Organisation“ aggregiert. Da jedes Dimensionselement nur einen Typ haben kann, gibt das Element Alle Typen den richtigen Wert zurück.

Filter-Kennzahl im Bericht in DeltaMaster für die Anzahl der Mitarbeiter in der gefilterten Attribut-Dimension

Abbildung 5: Filter-Kennzahl im Bericht

 

Damit sich der Nutzer nicht um das Anlegen der Filter-Kennzahl kümmern muss, können die Kennzahl „AnzahlMitarbeiter“, sowie weitere Kennzahlen derselben Measure-Group mittels eines Scopes im Cube-Skript wie folgt überschrieben werden:

-----------------------------------------
-- Attribut-Dimension aus PC-Dimension
-----------------------------------------
SCOPE (
    MeasureGroupMeasures("AnzahlMitarbeiter")
);

	THIS = ([Measures].CurrentMember, 
 [Organisation].[OrganisationselementTyp].[Alle Typen]);

END SCOPE;

Damit werden im Bericht die Mitarbeiterzahlen über alle Filteroptionen im Attribut-Dimension „OrganisationselementTyp“ korrekt summiert und dargestellt.

Saubere Darstellung der Kennzahl „AnzahlMitarbeiter“ für die Attribut-Dimension nach Scope

Abbildung 6: Kennzahl „AnzahlMitarbeiter“ im Bericht nach Scope

Fazit zum Filtern von Parent-Child-Dimensionen nach Attribut-Dimensionen

In einem Szenario, in dem eine Kennzahl nur mit den Blattelementen einer Parent-Child-Dimension verknüpft und ein Attribut der Parent-Child-Dimension als Attribut-Dimension modelliert ist, kann das Filtern nach Ausprägungen der Attribut-Dimension leere Werte zurückliefern, wenn das ausgewählte Attribut einer höheren Ebene der Parent-Child-Dimension entspricht. Die Verwendung einer Filter-Kennzahl, fixiert auf das All-Element der Attribut-Dimension, kann dieses Problem lösen.