07.07.2015

Wie kann man die kritischen Knoten hinsichtlich des Unary Operator Bugs bei M2M Beziehungen und Parent Child identifizieren und den Bug fixen?

Technical Value

1. Vorstellung des Unary Operator Bugs

Es existiert ein Bug im Zusammenhang mit dem Unary Operator bei M2M Beziehungen und Parent Child. Allerdings greift der Bug nur bei „-“ als Unary Operator. Wird bei einem Knoten als Unary Operator „-“ verwendet, so funktioniert die Hochaggregation zum Eltern Knoten noch korrekt, aber auf dem „Großeltern“ Knoten wird der Wert addiert statt subtrahiert.

2. Lösungsansatz mittels MDX Query zum Identifizieren der kritischen Stellen

Als Lösungsansatz bietet es sich an, als erstes die kritischen Stellen (Knoten) zu identifizieren, und dann im zweiten Schritt die korrekte Hoch-Aggregation im Cube Skript abzubilden.

Die kritischen Knoten werden mittels eine Kontrollabfrage ermittelt, bei der man zum einem die Hochaggregation selbst nachbaut und zum anderen mit den auf den Knoten im Cube stehenden Werten vergleicht. Um die Hochaggregation nachzubauen, benutzt man zum einen die „DataMember“ Funktion und zum anderen die „UNARY_OPERATOR“ member property. Mit der DataMember Funktion kann man den Wert des „DataMember“ abrufen. Zur Erläuterung: Jedes „Nicht-Blatt“ in einer Parent Child Hierarchy besitzt ein system generiertes DataMember. Auf diesem DataMember stehen die Werte aus der jeweiligen Faktentabelle des „aktuellen“ Measures. Die „UNARY_OPERATOR“ member property liefert den Unary Operator eines Members zurück. Mittels Unary Operators lassen sich Aggregationen innerhalb einer Hierarchie kontrollieren. Die nachstehenden Unary Operators existieren (Quelle: https://msdn.microsoft.com/en-us/library/ms175417.aspx ):

Unary operator Description
+ The value of the member is added to the aggregate value of the sibling members that occur before the member. This operator is the default operator if no unary operator column is defined for an attribute.
- The value of the member is subtracted from the aggregate value of the sibling members that occur before the member.
* The value of the member is multiplied by the aggregate value of the sibling members that occur before the member.
/ The value of the member is divided by the aggregate value of the sibling members that occur before the member.
~ The value of the member is ignored.

Neuen Kommentar schreiben

Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.

Klartext

  • Keine HTML-Tags erlaubt.
  • HTML - Zeilenumbrüche und Absätze werden automatisch erzeugt.
  • Web page addresses and email addresses turn into links automatically.
Teilen auf

Newsletter Anmeldung

Abonnieren Sie unseren Newsletter!
Lassen Sie sich regelmäßig über alle Neuigkeiten rundum ORAYLIS und die BI- & Big-Data-Branche informieren.

Jetzt anmelden

Unsere Website benutzt Cookies, um bestmögliche Funktionalitäten bieten zu können. Durch die Nutzung unserer Website, erklären Sie sich mit der Verwendung von Cookies einverstanden. In unserer Datenschutzerklärung finden Sie unter §5 Informationen und Links, wie Sie diesen Maßnahmen jederzeit widersprechen können.

Datenschutzerklärung