Você está na página 1de 37

MDX 101 Now its Multi-Dimensional

Alex Whittles

Alex@PurpleFrogSystems.com PurpleFrogSystems.com PurpleFrogSystems.com/blog Twitter: @PurpleFrogSys

Alex Whittles
PASS Chapter Leader in Birmingham, UK www.SQLMidlands.com

Regular speaker at SQL Bits, SQL Relay, SQL Saturday, Webinars & PASS Chapters
Run Purple Frog BI Consultancy

MSc in Business Intelligence

Business Intelligence Consultancy


Data Warehousing OLAP Cubes Dimensional Modelling Data Quality ETL Systems Reporting Systems

Location Reading

Date Mon 11th November

Southampton Cardiff
Birmingham Hemel Hempstead

Tue 12th November Wed 13th November


Thu 14th November Fri 15th November

Newcastle Manchester
Norwich Bristol London

Mon 25th November Tue 26th November


Wed 27th November Thu 28th November Fri 29th November

SQLRelay.co.uk

What is MDX?
Query Language Used to query OLAP Cubes Love child of SQL and a Rubiks Cube

SQL vs MDX
SELECT CurrencyName, OrderDateKey, OrderQuantity FROM FactInternetSales fis INNER JOIN dbo.DimCurrency dc ON fis.CurrencyKey = dc.CurrencyKey

SQL vs MDX
SELECT

[Currency].[Currency].MEMBERS ON COLUMNS, [Date].[Calendar].[Year].MEMBERS ON ROWS FROM [Adventure Works] WHERE [Measures].[Internet Order Count]

Cube Basics
SQL Server SSIS Integration Services SSRS Reporting Services SSAS Analysis Services

Query using:
Excel SSRS PerformancePoint MDX Other tools

Cube Basics
Reports

Cube

Data Warehouse

Finance Database

Sales Database

Marketing XLS

3rd Party CSV

Cube Benefits
Speed Simplicity Business Calculation Logic Drag & Drop Power of MDX

Dimensions Vs Measures
Dimensions Usually text Things you group or filter by A number of attributes Measures Always numbers Things you add up

The Star Schema


Dimension Dimension

Measures

Dimension

Dimension

MDX Basics Query Structure

SELECT { SET } ON COLUMNS, { SET } ON ROWS FROM CUBE WHERE ( TUPLE )

MDX Basics Query Example


SELECT { [Date].[Calendar Year].MEMBERS } ON COLUMNS, { [Product].[Category].MEMBERS } ON ROWS FROM [Adventure Works] WHERE ( [Measures].[Internet Sales Amount] )

MDX Basics Cheat Sheet


Member Tuple Set Set

MDX
Measure Dimension Attribute Hierarchy Member Tuple Set

SQL Equivalent (ish)


Column (numeric) Table Column (text) GROUP BY Col1, Col2 Row Multiple WHEREs Union

Syntax
[Measures].[xxx] [Dimension] [Dimension].[Attribute] [Dimension].[Hierarchy] [Dimension].[Attribute].[Member] [Dimension].[Hierarchy].[Member] ( Member, Member, Member, ) { Member, Member, Member, } { Tuple, Tuple, Tuple, }

Cube Basics - Dimensions


Dimension A denormalised business entity

Customer / Product / Date / Employee / etc.


Sourced from a SQL Server table in the data warehouse

Cubes Dimension Attribute Member

SQL Equivalent Table Column Row

Cube Basics - Members


Member A single item from a dimension attribute e.g. a Date, a Year, a product, an employee

Set
Multiple members OF THE SAME attribute e.g. Today & Yesterday or Customer IDs 123, 2921 and 5234

Cube Basics - Members

Syntax - Members
[Dimension].[Attribute].[Member] [Date].[Year].[2013] [Date].[Date].[2013-02-20] [Customer].[Customer].[Waitrose] [Customer].[Country].[UK] [Date].[Year].CURRENTMEMBER

Syntax Member Keys


[Dimension].[Attribute].&[Member]

[Date].[Year].[2013] [Date].[Year].&[2013] [Date].[Month].[March] [Date].[Month].&[3]

(Name) (Key) (Name) (Key)

Cube Basics - Sets

Syntax - Sets
{ MEMBER1, MEMBER2, MEMBER3 }

{ [Date].[Year].[2010], [Date].[Year].[2012] } { [Date].[Year].[2010] : [Date].[Year].[2012] } { null : [Date].[Year].CURRENTMEMBER }

Cube Basics - Tuples

Syntax - Tuples
( MEMBER, MEMBER, ) ([Date].[Year].[2012], [Customer].[Customer].[Waitrose]) ([Date].[Year].[2012], [Customer].[Customer].[Waitrose], [Product].[Product].[Banana])

Cube Basics Tuples revisited!

Cube Basics Tuples revisited!

Cube Basics Sets revisited!

Syntax - Sets
{ MEMBER1, MEMBER2, }
{ (TUPLE1), (TUPLE2), }
{ ([Date].[Year].[2010], [Product].[Product].[Banana]) , ( [Date].[Year].[2012], [Product].[Product].[Apple] ) }

Demo
Basic Queries
SELECT xxx ON COLUMNS SELECT xxx ON ROWS MEMBERS TUPLES SETS Basic Calculations

Dimension Navigation
CURRENTMEMBER
The query has context The current member relevant in the query
[Date].[Year].CURRENTMEMBER

PREVMEMBER
The one before to the current member
[Date].[Year].PREVMEMBER

Relative Calculations
Change since previous year
[Date].[Year].CURRENTMEMBER - [Date].[Year].PREVMEMBER

Hierarchies
Year
Month Date

Product Type
Product Group Product Product Version

Parent Child Hierarchies


Top Dog
Manager Employee Employee Employee Employee

Employee

Dimension Navigation
DESCENDANTS
ANCESTORS

PARENT
CHILDREN SIBLINGS

Demo Dimension Navigation


Dimension Navigation
DESCENDANTS

ANCESTORS
PARENT CHILDREN SIBLINGS

Visualising Queries
Very different to SQL
Think in blocks E.g. All data EXCEPT for xxx Run two queries and subtract them

minus

MDX 101 - Summary


Think in MDX, not SQL Get your head around the lingo
Member, Set, Tuple Dimension / Measuregroup

Keep it simple Use MDX for what its good for

MDX 101 Questions?.....


www.MDXpert.com
MDX Studio

www.PurpleFrogSystems.com www.PurpleFrogSystems.com/blog

Alex@PurpleFrogSystems.com @PurpleFrogSys

Você também pode gostar