Microsoft TechTalk OLAP Programmierung Gerhard Hieber Partner Group Microsoft GmbH Agenda Einführung in OLAP Clientprogrammierung mit ADO/MD MDX - Multidimensionale Erweiterung Programmierung mit DSO Data Warehousing Framework Building Managing Data Warehouse Design (Logical/physical schema/Data flow) Operational Data (OLE-DB) DB Schema Data Transformations (DTS) Transformation Using Data Mart Design (Schema) Data Marts (SQL Server & OLAP Server) Scheduling End-User Tools 3rd Party (Excel, Access, English Query) OLAP Microsoft Repository Data Warehouse Management (Console, Scheduling, Events,Topology) Data Flow Meta-Data Flow Beste OLAP Definition Fast Analysis Shared Multidimensional Information Source: The OLAP Report (http://www.olapreport.com) OLAP Konzepte Dimensionen Hierarchien Maße/Meßwerte Aggregationen Cubes Mehrdimensionale Daten “Hey . . . I sold $100M worth of goods” Produkt USA Asien Europa Juice Cola Milk Cream Toothpaste Soap 1 2 3 4 5 6 7 Dimension: Produkt, Region, Zeit Hierarchisches Summieren Produkt Industrie Region Land Zeit Jahr Kategorie Region Quartal Produkt Stadt Monat Monat Büro Tag Woche Was ist Analysis Services? Microsoft SQL Server Analysis Services • • • OLAP server OLAP Manager MMC Snap-In PivotTable Service auf dem Client • • • Stellt OLE-DB for OLAP bereit Object Modell ist ADO MD Wird mit Excel 2000 geliefert; unterstützt Offline-Nutzung Architektur OLAP Manager Processing Querying Applikation OLAP Store OLAP Server ADO MD Other OLE DB Providers OLEDB for OLAP DSO PivotTable Service SQL Server Data Warehouse Flexible Architektur Diskussion zwischen MOLAP und ROLAP Anbietern über Kundenbedürfnisse Analysis Services bietet beste Unterstützung und nahtlose Integration von MOLAP, ROLAP, und HOLAP Benutzer und Applikation sieht nur Cubes OLAP Problem Anzahl Aggregationen Datenexplosion 70000 65536 60000 50000 40000 30000 20000 16384 10000 0 16 2 3 4 4096 1024 256 81 5 6 Anzahl Dimensionen (4 Level in jeder Dimension) 7 8 Produkt Familie Produkt Quartal Monat Quartal Produktfamilie Höchste Aggregation Produkt Monat Aggregationsassistent findet die optimalen Aggregationen Fakten Tabelle Datenexplosion Aggregation Wizard findet die “80-20”Regel • • Kleinste Anzahl aller Pre-Aggregations, die größte Performanceverbesserung versprechen Prüft Level Anzahl jeder Dimension und Parent-Child Verhältnis jedes Levels Zusammenarbeit Client/Server Cache Query 1) Zeig mir Jan99, Feb99, und März99 Sales Query 2) Zeig mir Q199 Sales Client Client kann 1) Jan99, Feb99, and Mar99 Sales kalkulieren ! 2) Q199 Sales 3) Q198 Sales Query 3) Zeig mir Q199 & Q198 Sales Nur Q198 vom Server benötigt ! Server 1) Jan99, Feb99, and Mar99 Sales 3) Q198 Sales PivotTable Service ISV Apps Excel 2000 ADO/MD Cube files Lokaler Store OLE DB for OLAP PivotTable Service •APIs •Caching •Desktop Engine ROLAP cubes OLE DB OLAP Services SQL Server Microsoft Universal Data Access Business Application Active Data Objects (with ADO/MD) OLE DB OLE DB for OLAP OLE DB OLE DB ADs RDBMS MD STORE Mail Server Active Directory OLE DB for OLAP OLEDB f. OLAP ADO MD MDx COM Interface (OLE DB) • Teil von OLE DB 2.x Clientseitige Datenquery Erlaubt • • • Schema Information Query Definition Holt Zellen des ErgebnisDatasets Nur VC++ Industrie-Unterstützung OLE DB for OLAP • • von ca. 40 Herstellern unterstützt ACG, Arbor, Brio, Business Objects, Cognos, Comshare, Hummingbird, Knosys, MIS AG, Portola, Seagate, TopTier und weitere haben Versionen MS Excel und Access Gruppe !! OLAP Services benutzt OLE DB for OLAP als Standard-Schnittstelle Office 2000 und OLAP Excel 2000 (XL2K) • • • Pivot-Table Service auf Client Native OLEDB for OLAP Support Local CUBE Storage und Caching Access 2000 (A2K) • • • Pivot-Table Service auf Client Server Page Generation (.ASP) Jet oder die neue MSDE Office Web Components Komponenten auf Basic der Office Analyse und Reporting Funktionen ActiveX Komponenten, die interaktives Reporting und Analyse bereitstellen • PivotTable Component • Charting Component Office Web • Spreadsheet Component Components IIS • DataSource Component Internet Explorer ASP Office Web Component HTTP Component Services lokal Office services auf dem Server ADO MD OLEDB f. OLAP High Level Objekt Modell • Exposes OLEDB f. OLAP ADO MD • • • MDx • Basiert auf ADO Browsen von CubeDefs Ausführen der Query Fetchen der Zellen vom resultierenden Cellset Erzeugen neuer Formeln unterstützt VB, J++, VC++ Einfache Anwendung ADO und ADOMD Objekte Data Access Meta Data CellSet Catalog Connection Axis CubeDef Cell Cube Cellset Beispiel X-axis has 2 dims SalesRep & Geography 2 Slices - Measures & Products SELECT List has 2 <axis specs> Sales Of Computers Nelson White USA Japan USA_North USA_ Seattle Boston South 1991, Qtr1 USA Japan USA_North USA_ Seattle Boston South Jan 00 10 20 30 40 50 60 70 Feb 01 11 21 31 41 51 61 71 Mar 02 12 22 32 42 52 62 72 1991, Qtr2 03 13 23 33 43 53 63 73 1991, Qtr 3 04 14 24 34 44 54 64 74 Oct 05 15 25 35 45 55 65 75 Nov 06 16 26 36 46 56 66 76 Dec 07 17 27 37 47 57 67 77 1991, Qtr4 Y-axis has 1 dimension - Time ADO MD Objektmodell CubeDefs Dimensions Hierarchies Connection Levels Cellset Members Axes Positions Members Cells Connecting ... Ähnlich dem ADO Recordset Dim ActiveCon As New ADODB.Connection Dim cs As New ADOMD.Cellset ActiveCon.Open "PROVIDER=MSOLAP;” _ & “Data source=MyServer;” _ & “INITIAL CATALOG=Foodmart” cs.Open Mdx_Statement, ActiveCon Browsen des Cellset CellSet vergleichbar mit Array … for i = 0 to _ cs.Axes(0).Positions.Count - 1 For j = 0 To _ cs.Axes(1).Positions.Count -1 MsgBox cs.Item(i, j).Value next j next i MDx - Multidimensional Expressions OLEDB f. OLAP ADO MD MDx Syntax zur Definition eines Datasets SELECT <axis-spec>,<axis-spec>,.. FROM <cube-spec> WHERE <slicer-spec> Erste MDX Query !!! MDX select [Gender].children on rows, {[Time].[1997], [Time].[1997].[Q1], [Time].[1997].[Q2].children, [Time].[1997].[Q3]:[Q4] } on columns from Sales OLAP ist Multidimensional “Verkaufte Produkte pro Jahr in den USA” Produkt USA SLICE Asia Europe Juice Cola Milk Cream Toothpaste Soap 1 2 3 4 5 6 7 Monat Demo Pivot Report Dimension Level Row Produkt Column Zeit Name Monat Slice Slice USA Sales Region Measures SELECT { ([Time].[1997]), ([Time].[1998].[Q1]:[Q3]), [Time].[1998].[Q4].Children} ON COLUMNS, {([Product].Members)} ON ROWS FROM Office2000 WHERE ([Measures].[Sales Store] , [Region].[USA]) Cellset Beispiel aus der MDX Sicht X-axis: Tuples made of 2 members 1 from Salesrep, 1 from Geography Slicer: 1 tuple, made of 2 members - 1 from Measures, 1 from Products Sales Of Computers Nelson, Nelson, Nelson, Nelson, White, White, White, White, Seattle Boston USA_ Japan Seattle Boston USA_ Japan South South 1991Jan 00 10 20 30 40 50 60 70 Each axis is a set 1991Feb of tuples 01 11 21 31 41 51 61 71 1991Mar 02 12 22 32 42 52 62 72 1991Q2 03 13 23 33 43 53 63 73 1991Q3 04 14 24 34 44 54 64 74 1991Oct 05 15 25 35 45 55 65 75 1991Nov 06 16 26 36 46 56 66 76 1991Dec 07 17 27 37 47 57 67 77 Data cells occur at the intersection of tuples Y-axis: Tuple is just a single member from Time dimension Set Expressions Top und Bottom Anweisungen: • TOPCOUNT(<set>,<index>,<num-exp>) liefert die top <index> Member basierend auf <num-exp> • • TOPPERCENT, TOPSUM BOTTOM ebenso Filtering eines Sets: • FILTER(<set>, <search condition>) entfernt Member aus <set>, die nicht der <search condition> entsprechen Example Set Expressions Produkte geordnet nach Sales, hierarchisch, aufsteigend ORDER(Products.MEMBERS, Sales) Produkte geordnet nach Sales, nicht hierarchisch, aufsteigend ORDER(Products.MEMBERS, Sales, BASC) Produkte deren Sales 1996 > 1997 Sales war FILTER(Products.MEMBER, (Sales,[1996]) > (Sales,[1997])) Children Time.[97].FirstChild All 97 Jan 98 Q1 Q2 Q3 Q4 Q1 Feb Mar Oct Nov Dec Q2 Q3 Q4 Children Time.[97].Children All 97 Jan 98 Q1 Q2 Q3 Q4 Q1 Feb Mar Oct Nov Dec Q2 Q3 Q4 Descendants Descendants(Time.[97], Quarter) All 97 Jan 98 Q1 Q2 Q3 Q4 Q1 Feb Mar Oct Nov Dec Q2 Q3 Q4 Descendants Descendants(Time.[97], Month) All 97 Jan 98 Q1 Q2 Q3 Q4 Q1 Feb Mar Oct Nov Dec Q2 Q3 Q4 “It’s just a question of time ….” Wie ist der Umsatz der gegenwärtigen im Vergleich zur vorhergehenden Periode ? Umsatzvergleich der gegenwärtigen Periode mit der gleichen Periode des Vorjahres ? Voraussetzung ist die richtige Zeit .... Wie ist der Umsatz der gegenwärtigen im Vergleich zur vorhergehenden Periode ? 1Year 1997 Quarter Month Q1 Jan Feb Mar Q2 April May Jun Q3 Jul Aug Sep Q4 Oct Nov Dec Sales 790 120 30 40 50 200 65 45 90 185 55 60 70 285 80 100 105 Result 10 10 80 15 -20 45 -15 -45 5 10 100 10 20 5 Wie ist der Umsatz der gegenwärtigen im Vergleich zur vorhergehenden Periode ? Year Quarter Q2 Month April May Jun Sales 200 65 45 90 Result 80 15 -20 45 Time.CurrentMember, Measures.CurrentMember Time.CurrentMember,Measures.Sales Time.CurrentMember.PrevMember, Measures.Sales Umsatzvergleich der gegenwärtigen Periode mit der gleichen Periode des Vorjahres ? Year 1997 Quarter Q1 Q4 1998 Q1 Q4 Month Total 97 Total Q1 Jan Feb Mar Sales Sales Total Q4 Oct Nov Dec Total 98 Total Q1 Jan Feb Mar 285 80 100 105 170 50 55 65 50 20 Total Q4 Oct Nov Dec 275 90 100 85 -10 10 Result 120 30 40 50 Umsatzvergleich der gegenwärtigen Periode mit der gleichen Periode des Vorjahres ? Year 1997 Quarter Q1 Q4 1998 Q1 Q4 Month Total 97 Total Q1 Jan Feb Mar Sales Sales Total Q4 Oct Nov Dec Total 98 Total Q1 Jan Feb Mar 285 80 100 105 Total Q4 Oct Nov Dec 275 90 100 85 Result 120 30 40 50 170 50 55 65 20 (Measures.Sales,Time.CurrentMember)(Measures.Sales,ParallelPeriod(Year,1,Time.CurrentMember) Warum MDX, statt SQL? In OLAP ist Ergebnis ein Cube • In OLAP sind Aggregationen immer vorhanden. • • Abb. Cubes auf Tables ist unnatürlich SQL Tables speichern atomare Daten Aggregationen sind Teil der Query (GROUP BY) Hierarchien üblich bei OLAP Dimensionen OLAP Services Architektur OLAP Manager Add-Ins DSO Custom Apps Rep. OLAP Service Rep. MOLAP Store Client Side ROLAP Store (SQLServer & Any OLE DB) DSO Basisstruktur MDStore: • Database • Cube/Virtual Cube • Partition • Aggregation MDStore Dimensions Levels Measures MDStores And the 5th Element... So sieht es dann aus ... Server MDStores Dimensions Levels Databases... Measures MDStores Dimensions Levels enthält Cubes ... Measures MDStores Dimensions Levels enthält Partitionen ... Measures MDStores Dimensions Measures Levels enthält Aggregationen ... Fazit Integration Office2000 - SQL 2000/OLAP Eigenentwicklung mit ADO und DSO Notwendige Kenntnisse • • • • ADO 2.x Objektmodell Cellset und Catalog Objektstruktur Zugriffssprache MDX sehr wichtig evtl. Methoden/Eigenschaften der Office 2000 Web Components Wo gibt’s weitere Info’s? msdn online • • msdn • • • http://www.microsoft.com/sql/ http://www.microsoft.com/germany/backoffice/sql/ MSDN Online SQL Server Developer Center Developing Effective Decision Support Objects (DSO) Data Transformation Services (DTS) in SQL2000 msnews.microsoft.com • microsoft.public.sqlserver.olap • microsoft.public.sqlserver.datawarehouse Fragen!? Uff... Glossar Datawarehousing: Verdichtete, bereinigte und konsolidierte Datenbasis als Voraussetzung für OLAP Analyse. OLAP: Online Analytical Processing. Schnelle fachliche Analyse von mehrdimensional aufbereiteten Daten. DTS: Data Transformation Services, ETL Komponente von SQL Server. ETL: Extraction, Transformation und Loading Tool. MDAC: Microsoft Data Access Components. OLEDB for OLAP: Spezifikation für den einheitlichen Zugriff auf und die Darstellung von mehrdimensionalen Daten basierend auf dem OLEDB API. DSO: Decision Support Objects. Objektinterface für den Zugriff auf und die Definition von mehrdimensionalen Datenbanken (Cubes). Cube: Mehrdimensionaler Würfel (Datenbank) Office Web Component: Active X Komponenten für den Zugriff auf und die Darstellung von mehrdimensionalen Cubes. Bestandteil von Office 2000. Empower people through great software any time, any place, and on any device