Mdx Franco Perduca Factory Software francop@factorysw.com
Mdx Multi-Dimensional eXpression Parte della specifica OLEDB for OLAP Ora parte anche delle specifiche XML/A Nasce per reporting e analisi
SQL vs MDX SQL Relazionale MDX Multidimensionale Joins devono essere specificati Non è “Posizionale” Data dynamically aggregated 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 Management (limitato rispetto a Sql) Alter Cube, Update Cube, etc.
Mdx ogni cella ha un nome ([All Product], [All State], Dollars) All State Canada Mexico USA Dollars All Product Units Bread (Bread, USA, Units) Dairy (Meat, Mexico, Dollars) Meat
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 ([Measures].[Order Count],[Date].[Calendar Year].&[2004])
([All State], [All Time], [Dairy], [Sales Dollars]) 3/27/2017 2:26 AM Mdx A tuple is a cell address. ([All State], [All Time], [Dairy], [Sales Dollars]) Tuple da Row, Column, and Filter © 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Mdx Set Insieme di tuple della stessa “dimensionalità” { ([Measures].[Order Count],[Date].[Calendar Year].&[2004]), ([Measures].[Order Count],[Date].[Calendar Year].&[2003]) }
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)]))
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
Mdx Forms e Script Mode MDX Designer Nuovo ambiente centralizzato Intellisense Color coding Debugger !!!! Forms e Script Mode Forms piu’ semplice creare mdx Script Mode per utenti piu’ avanzati
Mdx Primo mdx script Calculated Member Es: 3/27/2017 2:26 AM 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]) (attenzione a specificare oggetti corretti) [Measures].[Totale]/[Measures].[Qta] su supermarket © 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Mdx “Lavorare” con il tempo Importante la funzione CurrentMember [dim tempo].[Year - Quarter - Month - Date].currentmember.name (o . Uniquename) E la PrevMember ([dim tempo].[Year - Quarter - Month - Date].currentmember.prevmember,[Measures].[Totale]) O meglio ([dim tempo].[Year - Quarter - Month - Date].prevmember,[Measures].[Totale]) Crescita pp ([dim tempo].[Year - Quarter - Month - Date],[Measures].[Totale])-
Mdx “Lavorare” con il tempo ParallelPeriod Si potrebbe usare la funzione lag Es lag(12) per anno Meglio parallelperiod Parallelperiod(Livello,quanto,Membro) 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 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 [Dim Clienti].[Provincia - Comune].CurrentMember.Parent ( [Dim Clienti].[Provincia - Comune],[Measures].[Qta] ) / ( [Dim Clienti].[Provincia - Comune].Parent,[Measures].[Qta] )
Mdx non solo misure Media di una gerarchia La associo ad una gerarchia Avg(avg([Dim Clienti].[Comune].[Comune].members) La associo ad una gerarchia Ed ad un Parent Member
Mdx NamedSet Set già pronto al interno del udm Es top n topcount([Dim Clienti].[Comune].[comune].members,5,[Measures].[Totale])
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>
Set SELECT [Sales Amount] ON 0, <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];
Assi SELECT NON EMPTY [Measures].Members ON 0, <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];
Mdx Funzioni (tra le piu’ usate) Order Head/Tail TopCount Filter Crossjoin (*) Except (-) Generate
Mdx Attributi aggiuntivi Hierarchize (ordina dimensione) NON EMPTY (toglie righe vuote) CELL PROPERTIES Formatted_Value;
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
3/27/2017 2:26 AM ADOMD.Net © 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
3/27/2017 2:26 AM ADOMD.Net © 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Client Metadata Struttura del cubo. CubeDef Class Dimension Hierarchy Level Member
Query Execution Invia MDX via AdomdCommand Standard MDX Torna CellSet Griglia multidimensionale
CellSet Structure Axes Sets Tuples Terminologia cambiata da adomd per essere piu’ aderente a MDX Data Values (array multidimensionale) Index è (n,m) array element
CellSet metadata Metadati sono disponibile dal CellSet OlapInfo AxesInfo CellsInfo CubesInfo
3/27/2017 2:26 AM Domande? © 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
© 2004 Microsoft Corporation. All rights reserved. 3/27/2017 2:26 AM © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary. © 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.