Scoped assignments – Fluch oder Segen? Beispiele aus der Praxis... 08.10.2016 SQLSaturday #555 Munich 2016 Our Sponsors 08.10.2016 SQLSaturday #555 Munich 2016 Wer bin ich? BI Consultant bei der oh22data AG Schwerpunkte: SSAS, MDS, SSRS > 10 Erfahrung im Datenbank und BI Bereich Sprecher bei Regionalgruppen und nationalen und internationalen Konferenzen wie SQL Saturday, SQL Bits etc. 08.10.2016 SQLSaturday #555 Munich 2016 Agenda Was sind Scoped Assignments? Welche Risiken gibt es bei Scoped Assignments? Abhängigkeiten vom Dimensionsdesign Will ich die Aggregation meines Measures nutzen? Bekannte MDX Issues (Aggregate mit Sets) Scopes und Security Manchmal ist es doch nicht der Scope (Scope Isolation) Resümee Q&A 08.10.2016 SQLSaturday #555 Munich 2016 Was sind Scoped Assignments? (I) Business Logik des Cubes Stehen im Calculations Skript des Cubes Änderung von Werten Änderung von Berechnungsvorschriften (Aggregationsverhalten) Zentrales Business Logik Element neben berechneten Elementen Berechnete Elemente erweitern den Cube, Scopes überschreiben bestehende Zellen. 08.10.2016 SQLSaturday #555 Munich 2016 Was sind Scoped Assignments? (II) Zwei Elemente: Subcube Definition => Welcher Teil des Cubes soll beeinflusst werden? Assignment => Welche Änderung soll vorgenommen werden? Zwei Syntaxvarianten: Direct assignment => (Subcube) = Assignment; SCOPE(Subcube); THIS = Assignment; END SCOPE; 08.10.2016 SQLSaturday #555 Munich 2016 Was sind Scoped Assignments? (III) Subcube Definition: Beschreibe den Subcube so präzise wie möglich durch die Kombination von Sets aus verschiedenen Hierarchien. Set Optionen: einzelnes Element mehrere Elemente ohne das All-Element alle Elemente einschließlich des All-Elements Bekannter Fehler: ‚arbitrary shaped set‘ Der Fehler kommt, wenn das Ergebnisset nicht ausbalanciert ist (gleiche Leveltiefe aller Pfade) 08.10.2016 SQLSaturday #555 Munich 2016 Was sind Scoped Assignments? (IV) Komplexe Scopes: Vereinfachung durch Verschachtelung (Nested scopes) If/Case Statements zur Strukturierung Subcube so klein wie möglich definieren, Measure dabei nicht vergessen Keine Mischung von echten und berechneten Measures (geht meistens eh nicht ) 08.10.2016 SQLSaturday #555 Munich 2016 Abhängigkeiten vom Dimensionsdesign Komplexes Dimensionsdesign => erhöhte Komplexität beim Scoping Im Fall von mehreren Hierarchien müssen die Elemente der Subcubedefinition in der Schnittmenge der Hierarchien liegen. Wenn eine oder mehrere der Hierarchien mehrere Root-Elemente haben wird es wirklich schwierig. 08.10.2016 SQLSaturday #555 Munich 2016 Abhängigkeiten vom Dimensionsdesign Demo 08.10.2016 SQLSaturday #555 Munich 2016 Will ich die Aggregation meines Measures nutzen? Scoped Assignments sind sowohl für echte als auch für berechnete Measure möglich. Bei echten Measures kann man das Aggregationsverhalten zur Beschleunigung der Scopeberechnung nutzen: http://blog.crossjoin.co.uk/2013/05/29/aggregati ng-the-result-of-an-mdx-calculation-usingscoped-assignments/ Aber das Berechnungsverhalten wird schwerer nachvollziehbar und in manchen Fällen verursachen wir so erhebliche Performanceeinbrüche. 08.10.2016 SQLSaturday #555 Munich 2016 Will ich die Aggregation meines Measures nutzen? Demo 08.10.2016 SQLSaturday #555 Munich 2016 Bekannte MDX Issues (Aggregate mit Sets) Es gibt zahlreiche Blog Posts und DokuEinträge über bekannte Performance Issues. Nutzt die Erfahrungen der Anderen zu eurem Vorteil. Z.B.: https://msdn.microsoft.com/enus/library/dn749781.aspx 08.10.2016 SQLSaturday #555 Munich 2016 Bekannte MDX Issues (Aggregate mit Sets) Demo 08.10.2016 SQLSaturday #555 Munich 2016 Scopes und Security Security relevante Dimensionen in Scoped Assignments können zu Fehlern führen. Die Verwendung von Named Sets kann das lösen, aber zu Performanceproblemen führen. http://blog.crossjoin.co.uk/2011/03/16/refere ncing-named-sets-in-calculations/ Exists bzw. Existing können hier helfen. 08.10.2016 SQLSaturday #555 Munich 2016 Scopes und Security Demo 08.10.2016 SQLSaturday #555 Munich 2016 Manchmal ist es doch nicht der Scope (Scope Isolation) Mal nicht die Performance: Falsche Werte sind auch ein Problem. Und Key User schreiben manchmal interessante Queries. http://blog.crossjoin.co.uk/2014/10/14/mdxsolve-order-scope_isolation-and-theaggregate-function/ 08.10.2016 SQLSaturday #555 Munich 2016 Manchmal ist es doch nicht der Scope (Scope Isolation) Zellen werden durch natürliche Aggregationen und Scopes beeinflusst. Jeder Änderung wird „Pass“ genannt Wie findet man den „Winning Pass“? Cell Properties können helfen: Ändere z.B. die „Back_Color“ eines Subcubes für jedes Assignment und schau dir farbenfroh an, wer gewinnt. 08.10.2016 SQLSaturday #555 Munich 2016 Manchmal ist es doch nicht der Scope (Scope Isolation) Demo 08.10.2016 SQLSaturday #555 Munich 2016 Resümee Keine Überraschung: Scoped Assignments sind sowohl Fluch als auch Segen Große Chancen, noch größere Risiken Nutzt die Erfahrungen anderer. Es gibt genug in der Community darüber. Testen, Testen, Testen… SQL Server Profiler zum Messen der Performance Cell Properties zum Visualisieren der Berechnungsreihenfolge Monitoring der User Queries (soweit erlaubt ;-)) 08.10.2016 SQLSaturday #555 Munich 2016 Q&A ??? 08.10.2016 SQLSaturday #555 Munich 2016 Thank you… For attending this session. And thanks to all those amazing guys, that share their knowledge with the community and helped me solve my issues, so thanks to Chris, Marco, Alberto and all the others… 08.10.2016 SQLSaturday #555 Munich 2016 Save the Dates! PASS Camp 2016 - 06. to 09. December 2016 SQL Konferenz 2017 - 14. to 16. February 2017 08.10.2016 SQLSaturday #555 Munich 2016 How did you like it? Please give feedback to the event: http://goo.gl/5tStsd 08.10.2016 SQLSaturday #555 Munich 2016 to me as a speaker: http://goo.gl/TgViTX