Mdx Franco Perduca Factory Software [email protected] Mdx Multi-Dimensional eXpression Parte della specifica OLEDB for OLAP Ora parte anche delle specifiche XML/A Nasce per reporting e analisi 2 SQL vs MDX SQL Relazionale Joins devono essere specificati Non è “Posizionale” Data dynamically aggregated 3 MDX Multidimensionale Relazioni sono definite nei metadati Posizionale Data referenced Mdx Lo usiamo per • Query Statements Per costruire reports (“simile” a SQL) • Formule Membri calcolati (simile a Excel) Named Sets Subcube expression • 4 Management (limitato rispetto a Sql) • Alter Cube, Update Cube, etc. Mdx ogni cella ha un nome ([All Product], [All State], Dollars) All Product Dollars Units Bread Dairy Meat (Bread, USA, Units) 5 (Meat, Mexico, Dollars) Mdx Tupla • Coordinate multidimensionali di una cella 1 membro da ogni dimensione Se piu’ dimensioni separo con , Va messa tra () e nome tra [] (non obblig.) Se una dimensione non è specificata usa membro corrente 6 ([Measures].[Order Count],[Date].[Calendar Year].&[2004]) Mdx Tuple da Row, Column, and Filter 7 ([All State], [All Time], [Dairy], [Sales Dollars]) Mdx Set Insieme di tuple della stessa “dimensionalità” { ([Measures].[Order Count],[Date].[Calendar Year].&[2004]), ([Measures].[Order Count],[Date].[Calendar Year].&[2003]) } 8 Mdx Mdx formule Nuove misure Nuovi membri • Tuple based Average Price = [Sales Amount] / [Order Quantity] come riferimento Excel: =B5/B4 • Set based Year To Date = Sum( PeriodsToDate([Order Date].[Calendar Quarter]),[Order Quantity]) Come Excel ranges: =Sum(B2:B10) ([Unit Sales],ancestor(Product,[Product].[(All)])) 9 Mdx Autoexist Non ritorna attributi della stessa dimensione che non esistono altri attributi Es Provincia , Comune Se scelgo MI vedo solo i comuni della provincia di MI Non ha niente che fare con i fact table Posso creare tupla che non ritorna nulla MI -> Rimini 10 Mdx MDX Designer Nuovo ambiente centralizzato Intellisense Color coding Debugger !!!! Forms e Script Mode 11 Forms piu’ semplice creare mdx Script Mode per utenti piu’ avanzati Mdx Primo mdx script Calculated Member Possibilità di organizzarli in folders Es: [Measures].[Totale]/[Measures].[Qta] avg(topcount([Dim Clienti].[Dim Clienti].[Dim Clienti].members,5,[Measures].[Totale]),[Measures].[ Totale]) 12 (attenzione a specificare oggetti corretti) Mdx “Lavorare” con il tempo “Lavorare” con il tempo Importante la funzione CurrentMember E la PrevMember [dim tempo].[Year - Quarter - Month Date].currentmember.name (o . Uniquename) ([dim tempo].[Year - Quarter - Month Date].currentmember.prevmember,[Measures].[Total e]) O meglio ([dim tempo].[Year - Quarter - Month Date].prevmember,[Measures].[Totale]) Crescita pp ([dim tempo].[Year - Quarter - Month Date],[Measures].[Totale])([dim tempo].[Year - Quarter - Month Date].prevmember,[Measures].[Totale]) 13 Mdx “Lavorare” con il tempo ParallelPeriod Si potrebbe usare la funzione lag Meglio parallelperiod Parallelperiod(Livello,quanto,Membro) 14 Es lag(12) per anno es (parallelperiod([dim tempo].[Year - Quarter - Month Date].[Year],1,[dim tempo].[Year - Quarter - Month Date]),[Measures].[Totale]) Mdx “Lavorare” con il tempo Aggregazione YTD Funzione YTD, ritorna membri ad un livello da inizio anno Es YTD([dim tempo].[Year - Quarter - Month Date].[Month].&[2003-03-01T00:00:00]) /* Marzo 2003*/ Torna 15 Gennaio 2003 Febbraio 2003 Marzo 2003 Funzione QTD stessa cosa su quarter Funzione PeriodsToDate specifico data inizio Mdx altri esempi Percentuale rispetto al totale Funzione Root, ritorna All di una dimensione Es root([Dim Clienti]) ([Measures].[Totale]) / (root([Dim Clienti]),[Measures].[Totale]) Percentuale rispetto al padre Parent ritorna il membro padre Es [Dim Clienti].[Provincia - Comune].CurrentMember.Parent ( [Dim Clienti].[Provincia - Comune],[Measures].[Qta] ) / ( [Dim Clienti].[Provincia - Comune].Parent,[Measures].[Qta] ) 16 Mdx non solo misure Media di una gerarchia Avg(avg([Dim Clienti].[Comune].[Comune].members) La associo ad una gerarchia Ed ad un Parent Member 17 Mdx NamedSet Set già pronto al interno del udm Es top n 18 topcount([Dim Clienti].[Comune].[comune].members,5,[Measures].[Total e]) Mdx MDX query È composta da 3 parti – Dicers: assi (normalmente Column e Row) – Data Grid – riempita dalla risoluzione degli assi – Slicers: Filtro SELECT <Set> On Columns, <Set> On Rows FROM <Cube> WHERE <Slicers> 19 Set <x>.Members Descendants or Children se sono in una gerarchia Membri espliciti in {} {[Sales Amount],[Order Quantity]} Membro singolo {} non obbligatorio SELECT [Sales Amount] ON 0, [Category].Members ON Rows FROM [Adventure Works]; 20 Assi <Set> ON <Axis> Columns 0 Rows 1 NON EMPTY rimuove celle vuote SELECT NON EMPTY [Measures].Members ON 0, NON EMPTY [Category].Members ON Rows FROM [Adventure Works]; 21 Mdx Funzioni (tra le piu’ usate) Order Head/Tail TopCount Filter Crossjoin (*) Except (-) Generate 22 Mdx Attributi aggiuntivi Hierarchize (ordina dimensione) NON EMPTY (toglie righe vuote) CELL PROPERTIES Formatted_Value; 23 ADOMD.Net Nuova versione .Net of ADOMD ADOMD.Net in AS2005 .Net wrapper for XML/A SOAP calls Non fa parte di Sql 2005 Già rilasciato in AS2K, XML/A “parla” con PivotTable Service (PTS) in Sql 2005, XML/A diretto al server 24 ADOMD.Net Cubes Cube Dimensions Dimension Hierarchies Hierarchy Levels Measures Measure 25 Level Members Member Properties ADOMD.Net Connection Command CellSet is instantiated by Executing on Command object CellSet Axes Axis Set Cells Cell Tuples Tuple Set Tuple 26 Members Member Client Metadata 27 Struttura del cubo. CubeDef Class Dimension Hierarchy Level Member Query Execution Invia MDX via AdomdCommand Standard MDX Torna CellSet Griglia multidimensionale 28 CellSet Structure Axes Sets Tuples Terminologia cambiata da adomd per essere piu’ aderente a MDX Data Values (array multidimensionale) Index è (n,m) array element 29 CellSet metadata Metadati sono disponibile dal CellSet OlapInfo AxesInfo CellsInfo CubesInfo 30 Domande? 31 © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.