MDX Overview
Nived Varma
[email protected]
What Is MDX?
• MDX is Multi Dimensional EXpressions
• MDX is the syntax for querying an Analysis
Services database
• MDX is part of the OLE DB for OLAP spec
• MDX is the key for all advanced analytical
capabilities of Analysis Services
Comparison To SQL
SQL Construct OLAP construct
SELECT… SELECT… (MDX)
CREATE… DSO object model
DROP…
INSERT…
DELETE…
MDX Basics
• MDX allows easy navigation in the
multi dimensional space
• It “understands” the MD concepts of
cube, dimension, level, member
and cell
• It is used for
– Queries – full statements
(SELECT…FROM)
– Business modeling – defining
calculated members using MDX
Expressions – not a full statement
MDX Queries vs. MDX Expressions
• MDX Queries
– Full statements (SELECT…FROM)
– Usually generated by a query tools and
applications such as Excel
– MDX Sample App deals in queries
• MDX Expressions
– Partial MDX statements
– Define a calculated member, or a set, or
member properties, etc.
– Returns a single value (which may
be a set)
MDX Myth
“Only developers need to know MDX”
Fact: MDX is used everywhere:
Calculated members
Security settings
Custom member rollup
Custom level rollup
Actions
Define named “Sets”
Calculated cells
MDX Constructs
• Members: an item in a hierarchy
– [John Doe]
– [2001]
– [2001].[Q1].[Jan]
• Tuple: an intersection of 2 or more members
– ([Product].[Drink].[Beverages], [Customers].[USA])
– ([Product].[Non-Consumable], [2001])
• Sets: a group of tuples or members
– {[John Doe], [Jane Doe]}
– { ( [Non-Consumable], USA ), ( Beverages, Mexico ) }
– [2001].Children
– TopCount(Store.[Store Name].
Members, 10, Sales)
Every Cell Has A Name...
Groceries
Appliances
Clothing
1997
1998
Time
1999
2000
2001
Measures
Every Cell Has A Name...
(Products.Clothing, Measures.Units, Time.[2000])
Groceries
Appliances
Clothing
1997
1998
Time
1999
2000
2001
Measures
Every Cell Has A Name...
(Products.Clothing, Measures.Units, Time.[2000])
(Products.Clothing, Measures.Sales, Time.[1999])
Groceries
Appliances
Clothing
1997
1998
Time
1999
2000
2001
Measures
Every Cell Has A Name...
(Products.Clothing, Measures.Units, Time.[2000])
(Products.Clothing, Measures.Sales, Time.[1999])
(Products.Groceries, Measures.Cost, Time.Year.[1997])
Groceries
Appliances
Clothing
1997
1998
Time
1999
2000
2001
Measures
The Current Cell: Currentmember
(Products.Clothing, Measures.Units, Time.[2000]) =
(Products.CurrentMember,
Measures.CurrentMember,
Time.CurrentMember)
Groceries
Appliances
Clothing
1997
1998
1999
2000
2001
Sales Cost Units
Naming Cells With Relative References...
Clothing
?
2000
Sales
Naming Cells With Relative References...
(Products.Clothing, Measures.Sales, Time.[2000].PrevMember)
Clothing
?
2000
?
Sales
Naming Cells With Relative References...
(Products.Clothing, Measures.Sales, Time.[2000].PrevMember)
(Products.Clothing, Measures.Sales, Time.[2000].NextMember)
Clothing
?
?
2000
?
Sales
Naming Cells With Relative References...
(Products.Clothing, Measures.Sales, Time.[2000].PrevMember)
(Products.Clothing, Measures.Sales, Time.[2000].NextMember)
(Products.Clothing, Measures.Sales.PrevMember, Time.[2000].Lag(3))
OR
Clothing
(Products.Clothing,
? Measures.Sales.PrevMember,
Time.[2000].Lead(-3))
?
2000
?
Sales
Calculated Members
• Calculated members add
significant power to Analysis cubes
Pre-define complex
business logic
Usually create
calculated
measures
Computed at run-
time
1. How Did Sales This Period Compare With Sales In The Previous
Period?
Year Qtr Mon Sales
2000 790
Q1 120
Jan 30
Feb 40
Mar 50
Q2 200
Apr 65
May 45
Jun 90
Q3 185
Jul 55
Aug 60
Sep 70
Q4 285
Oct 80
Nov 100
Dec 105
1. How Did Sales This Period Compare With Sales In The Previous
Period?
Qtr Mon Sales Delta
Q2 200 80
Apr 65 15
May 45 -20
Jun 90 45
(Time.CurrentMember, Measures.CurrentMember) =
1. How Did Sales This Period Compare With Sales In The Previous
Period?
Qtr Mon Sales Delta
Q2 200 80
Apr 65 15
May 45 -20
Jun 90 45
(Time.CurrentMember, Measures.CurrentMember) =
(Time.CurrentMember, Measures.Sales) -
1. How Did Sales This Period Compare With Sales In The Previous
Period?
Qtr Mon Sales Delta
Q2 200 80
Apr 65 15
May 45 -20
Jun 90 45
(Time.CurrentMember, Measures.CurrentMember) =
(Time.CurrentMember, Measures.Sales)
-
(Time.CurrentMember.PrevMember, Measures.Sales)
Results For Question 1:
Year Qtr Mon Sales Delta
2000 790
Q1 120
Jan 30
Feb 40 10
Mar 50 10
Q2 200 80
Apr 65 15
May 45 -20
Jun 90 45
Q3 185 -15
Jul 55 -35
Aug 60 15
Sep 70 10
Q4 285 100
Oct 80 10
Nov 100 20
Dec 105 5
2. How Did Sales In The Current Period Compare With Sales In The
Same Period Last Year?
Year Qtr Mon Sales
2000 790
Q1 120
Jan 30
Feb 40
Mar 50
Q4 285
Oct 80
Nov 100
Dec 105
2001 850
Q1 170
Jan 50
Feb 55
Mar 65
Q4 275
Oct 90
Nov 100
Dec 85
2. How Did Sales In The Current Period Compare With Sales In The Same
Period Last Year?
Year Qtr Mon Sales Annual Delta
2000 790
Q1 120
Jan 30
Feb 40
Mar 50
2001 850
Q1 170
Jan 50 20
Feb 55
Mar 65
(Time.CurrentMember, Measures.Sales)-
(Time.CurrentMember.Lag(12), Measures.Sales)
2. How Did Sales In The Current Period Compare With Sales In The Same
Period Last Year?
Year Qtr Mon Sales Annual Delta
2000 790
Q1 120
Jan 30
Feb 40
Mar 50
2001 850
Q1 170
Jan 50 20
Feb 55
Mar 65
(Time.CurrentMember, Measures.Sales)-
(Time.CurrentMember,Lag(12), Measures.Sales)
(ParallelPeriod(Year,1,Time.CurrentMember),
Measures.Sales)
Results For Question 2:
Year Qtr Mon Sales Ann. Delta
2000 790
Q1 120
Jan 30
Feb 40
Mar 50
Q4 285
Oct 80
Nov 100
Dec 105
2001 850 60
Q1 170 50
Jan 50 20
Feb 55 15
Mar 65 15
Q4 275 -10
Oct 90 10
Nov 100 0
Dec 85 -20
3. What Have My Sales Been Since The Beginning Of The Year?
Year Qtr Mon Sales
2000 790
Q1 120
Jan 30
Feb 40
Mar 50
Q2 200
Apr 65
May 45
Jun 90
Q3 185
Jul 55
Aug 60
Sep 70
Q4 285
Oct 80
Nov 100
Dec 105
3. What Have Sales Been Since The Beginning Of The Year?
Year Qtr Mon Sales YTD
2000 790
Q1 120 120
Jan 30 30
Feb 40 70
Mar 50 120
Time.Jan,Measures.Sales +
Time.Feb,Measures.Sales +
Time.Mar,Measures.Sales ...
3. What Have Sales Been Since The Beginning Of The Year?
Year Qtr Mon Sales YTD
2000 790
Q1 120 120
Jan 30 30
Feb 40 70
Mar 50 120
Time.Jan,Measures.Sales +
Time.Feb,Measures.Sales +
Time.Mar,Measures.Sales =
Sum(YTD(Time.CurrentMember), Sales)
Results For Question 3:
Year Qtr Mon Sales YTD
2000 790
Q1 120 120
Jan 30 30
Feb 40 70
Mar 50 120
Q2 200 320
Apr 65 185
May 45 230
Jun 90 320
Q3 185 505
Jul 55 375
Aug 60 435
Sep 70 505
Q4 285 790
Oct 80 585
Nov 100 685
Dec 105 790