<Insert Picture Here> Oracle BI EE / SE-1: Modellierung für Fortgeschrittene Marc Bastien Agenda • Modellierung für WEN? • Zugriff auf nicht DWH-Quellen • • • • Schweineohren Alias-Tables Fakten auf unterschiedliche Ebenen / Berechnungen Opaque Views • Einbindung Oracle OLAP • Lokalisierung • Writeback Informationszugriff zu jeder Zeit an jedem Ort Eine Plattform, Ein Modell, Mehrere Wege der Bereitstellung Datenintegration Ad-hocAnalyse Interaktive Dashboards Analysen mit Essbase Reporting & Publishing Proaktives Aufdecken und Alarme Analysen in Offline & mobil MS Office& OutlookIntegration Common Enterprise Information Model Integrierte Security, Benutzerverwaltung, Personalisierung Multidimensionale Kalkulation und Integration Intelligente Generierung von Anfragen und Services für einen optimierten Datenzugriff OLTP & ODS Systeme Data Warehouse Data Mart Essbase SAP, Oracle PeopleSoft, Siebel, Eigenentwicklungen Dateien Excel XML BusinessProzess Oracle BI Server Einfach, Leistungsstark, Intelligenz Quellenübergreifend • Vereinfachte Sicht mithilfe von Business-Modellen Oracle BI EE Presentation Services Open SQL Interface • Fortschrittliche Engine für Kalkulation & Integration • Intelligente Generierung von Anfragen und Services für einen optimierten Datenzugriff Andere 3rd Party Tools • Oracle BI Server • • • • • • • Simplified Business View Unified Metadata Intelligent Caching Advanced calculations Aggregate navigation & creation Federated query and integration Optimized SQL / function shipping • Hohe Skalierbarkeit und Performance • Grundlage für alle Presentation Services von OBIEE Native RDBMS • Oracle • SQL Server • DB2 • Teradata ODBC Multidimensional • XMLA • Oracle OLAP Option • MS Analysis Services • SAP BW Andere • XML, • Excel • Text Modellierung für WEN? • Fortgeschritten ist relativ... • Aktuelles Projekt: • Drei Monate Entwicklungszeit (BI Server und Frontend) • Kontinuierliche, punktuelle Unterstützung bei Problemen • Problem im Frontend: zwei Kennzahlen nicht gleichzeitig darstellbar • Zwei Sekunden: Löschen des gesamten Repositories und aller darauf basierenden Berichte • Zwei Tage intensives Hands-On und Problembehebung • Alle Berichte neu, viel Stress (Messe!),etc • Standard-Tutorial deckt nur Standardfall ab! Zugriff auf DWH-Quellen • Easy-Going: • Basis ist ein Star-Schema • ausgebildeten Dimensionen • Foreign-Keys • Qualitätsgesichert • Ziel ist ein Star-Schema... Zugriff auf DWH-Quellen • Vorgehensweise • Importieren der Quellen, inkl. Foreign-Keys (NEU in 10.1.3: OCI Import) • Drag&Drop aller Dimensionen und Fakten ins Business Layer • logische Verknüpfungen werden übernommen • Tabellen werden als Dimensionen und Fakten erkannt • Dimensionen anlegen • Aggregationen setzen, Abgeleitete Kennzahlen definieren, Umbennenen • Drag&Drop in Presentation Layer • Fertig! • Realität? •(schon: im Presales) Zugriff auf nicht-DWH (nicht Star) • • • • Operatives Modell Aggregationstabellen Snowflake Oracle OLAP Cubes Zugriff auf operatives Modell (Beispiel OE) Herausforderungen • PRODUCT_INFORMATION hat Hierarchieinformationen als „Schweineohren“ • Verschiedene Faktentabellen „Schweineohr“ • PAR_PRODUCT_ID enthält Vater (PRODUCT_ID) Schweineohr, Lösung PL • Alias-Tabellen für alle Ebenen erzeugen: Range und Brand Schweineohr, Lösung BL Range/Brand parent tables will only be included in SQL queries when they are needed! • Eine LTS mit drei Tabellen (PT) • WICHTIG: PT müssen gejoined sein! Mehrere Fakten • bei Zugriff auf Total wird ORDER_ITEMS nicht gejoined Logische Faktentabellen • In einem 3NF Modell wird es selten vorkommen, dass alle Fakten aus einer einzigen Faktentabellen gelesen werden können • Anders als bei logischen Dimensionstabellen werden bei LTS alle Joins stets ausgeführt, auch wenn diese gar nicht notwendig wären • Vorschlag: zusätzliche Logical Table Sources (LTS) anlegen, selbst wenn augenscheinlich überfüssig, um Joins zu vermeiden! Nur verbunden mit einer Tabelle, also schneller in Berichten, in denen nur “# Orders” und “Order Total” genutzt werden Diese LTS enthält zwei Tabellen, ist also teurer Zugriff auf Snowflakes Auflösung der Flocke Opaque Views • Möglichkeit, statt Tabellen SQL-Statements als Quelle zu verwenden Opaque Views • Nachteile: • Nicht immer performant! • SQL wird komplexer • Schlechter zu beguggen • Es gibt Wege drumrum • Lassen sich „materialisieren“ (View wird in DB angelegt) Cross-Database Joins • Vorteile: • Datenquellen übergreifende Analysen erstellen • Kann sonst fast keiner • Nachteile: • Kann langsam sein, keine großen Tabellen nutzen! • Ggfls. Driving-Table verwenden • statt einem großen Join über beide Tabellen im BI Server werden pro Eintrag in der Driving-Table kleine Abfragen gegen die zweite Tabelle mit WHERE... Abgesetzt • Alternative (manchmal, wenn beides gleiches RDBMS): • Unterschiedliche Tabellen von unterschiedlichen Benutzern lassen sich in einen Ordner der PL verwenden Cross-Database Joins • Mehrere Quellen markieren und dann Physical Diagram aufrufen • Join wie üblich definieren • Im Business Diagram ggfls Driving Table auswählen Berechnungen in PL oder BL? • Klar: •Sales = Units * Price •Produkt1 + Produkt2 = Produktgruppe A • Bsp1: Produkt1: 100Stk * 1,3€ = 130€ Umsatz • Bsp2: Produktgruppe A: wie lautet der Gesamtumsatz? •100Stk Produkt 1 à 1,3€ und 200Stk à 1,7€ •Alternative 1: Summe Stk=300; Avg Preis (1,3+1,7/2)=1,5 also 300*1,5 = 450€ ? •Alternative 2: 100*1,3 + 200*1,7 = 470€ ! Berechnung in BL • New logical Column, Berechnung einfügen Berechnung in PL • New logical Column einfügen • Berechnung in der LTS definieren! Oracle OLAP • (Leider) kein direkter Zugriff per OLAP API / MDX auf Oracle Cubes • Zugriff erfolgt über relationale Views • Erstellbar aus AWM • Spezielle Konfigurationsschritt in BI EE • Deutlicher Performancegewinn gegenüber rein relationalen Modellen • Berechnungen sollten in OLAP erfolgen • Durch neue Expression kann Berechnungsdefinition in BI EE erfolgen, die Berechnung aber in OLAP OLAP: Anforderung an die Query Beispiel: Select Amount, % Chg Prior Period and % Chg Prior Year SELECT amount, amount_pct_chg_pp, amount_pct_cht_py, category_category_desc, org_level2_desc, time_year_desc, time_quarter_desc FROM expense_cubeview WHERE CATEGORY_LEVEL = ‘CATEGORY' and TIME_LEVEL = ‘QUARTER' and org_level = 2 and org_level2_desc in ('Northeast Region', 'Western Region') Um beste Performance zu erreichen, muss die Query Filter auf jede einzelnen Dimensionslevel enthalten. Also muss BI EE so konfiguriert werden, dass diese Filter generirt werden! OLAP: View generieren View importieren OLAP im BL: Zerlegung Fakten/Dims 1) Fakten Aggregation auf “SUM” OLAP im BL: Zerlegung Fakten/Dims 2) Dimensionen Mit OLAP gibt es dieses Attribut immer! “Level” Indikator OLAP im BL: Dimensionen Für jede Ebene eine LTS in jeder Dimension (für die Ebenenbestimmung) 3) Eine LTS für jede Ebene “Channel” ist für “Total” level nicht relevant Ebene ist hard-coded OLAP im BL: “Pinning” Abfragen auf Ebenen forcieren 4) “Pinning” Dimension anlegen OLAP, letzter Schritt Verbingund von Ebene in der “Pinning” Dimension und der Dimension 5) BI EE Security setzen (für jede Fakten- und Dimensionstabelle) Diese Bedingung wird in jeder Abfrage angefügt. Muss gleich sein ACHTUNG: Benutzer darf nicht in der “Administrator” Gruppe sein, sonst wird die Bedingung ignoriert! OLAP in BI EE Beispiel : Bericht braucht Daten auf “Channel” Ebene gleich SELECT …… FROM …… WHERE CHANNEL_LEVEL =‘CHANNEL’ Lokalisierung • Was geht: • • • • Applikation selbst Spalteninhalte Spaltenbeschriftungen Texte in Dashboards / Answers etc. • Was geht nicht • Administrator • ODBC Treiber • Ggfls. weitere Admin-Werkzeuge Lokalisierte Komponenten (DE) 1. Application Metadata 2. Web Catalog Metadata 3. Repository Metadata 4. Multilingual Data Lokalisierte Komponenten (EN) 1. Application Metadata 2. Web Catalog Metadata 3. Repository Metadata 4. Multilingual Data Dateneingabe • Was geht: • Eingabe in vorher definierten Spalten im Dashboard / Answers und Speicherung in beliebiger Tabelle • Eingabe eines Wertes in vordefinierten Element und Nutzung dessen in • Überschriften, Berechnungen, Schwellwerten • Was geht nicht • BI EE ist keine Planungsapplikation! • Keine Validierung • Genutzt für • Kommentare, What-If, Einfache Eingaben ohne Validierung Dateneingabe: Präsentationsvariablen • Dashboardprompt wird zum Eingabewert • Genutzt für What-If, Berechnungen, Eingabe von Schwellwerten für Color-Coding, Überschriften etc. PV: Definition und Nutzung Dateneingabe: Writeback • „Echtes“ Zurückschreiben in Tabellen • Voraussetzung • • • • Connection Pool muss das erlauben (auch der Benutzer!) Caching muss für die betreffende Tabelle ausgeschaltet sein Datenmodell entsprechend anpassen (DB und BI!) Template erstellen und dann Presentation Server neu starten • Gute Idee: kein Zurückschreiben auf die „Ist“-Daten Writeback: Template • Tipp: erst Answers Query erstellen und in Tabelle Writeback aktivieren, dann erscheinen Spaltennamen (c1, c2 etc) • Template: XML Datei im Verzeichnis „oracle\OracleBIData\web\msgdb\customMessages” • Nach der Definition PresServer neu starten, Datei wird automatisch gelesen! • Struktur: <?xml version="1.0" encoding="utf-8" ?> <WebMessageTables xmlns:sawm="com.siebel.analytics.web/message/v1"> <WebMessageTable lang="en-us" system="WriteBack" table="Messages"> <WebMessage name="InsertFC1"> <XML> <writeBack connectionPool="SQL_Paint"> <insert>INSERT INTO P_FACT_FC (PERKEY,PRODKEY,MKTKEY,SZENKEY,UNITS_FC) VALUES(@{c2},@{c1},@{c0},@{c3},@{c5})</insert> <update>UPDATE P_FACT_FC SET UNITS_FC=@{c5} WHERE PERKEY=@{c2} AND PRODKEY=@{c1} AND MKTKEY=@{c0} and SZENKEY=@{c3}</update> </writeBack> </XML> </WebMessage> </WebMessageTable> </WebMessageTables> Dateneingabe: Writeback • Definition: • Query in Answers erstellen • Tabellen-Ansicht wählen • Die Tabelle zum Zurückschreiben aktivieren und Template angeben • „Wertinteraktion“ auf „Writeback“ setzen Zusammenfassung • Mächtiges Werkzeug • Viele Möglichkeiten • Sollten überlegt eingesetzt werden