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.
Scarica

Mdx