Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Alex Whittles
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
Location Reading
Southampton Cardiff
Birmingham Hemel Hempstead
Newcastle Manchester
Norwich Bristol London
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
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
Measures
Dimension
Dimension
MDX
Measure Dimension Attribute Hierarchy Member Tuple Set
Syntax
[Measures].[xxx] [Dimension] [Dimension].[Attribute] [Dimension].[Hierarchy] [Dimension].[Attribute].[Member] [Dimension].[Hierarchy].[Member] ( Member, Member, Member, ) { Member, Member, Member, } { Tuple, Tuple, Tuple, }
Set
Multiple members OF THE SAME attribute e.g. Today & Yesterday or Customer IDs 123, 2921 and 5234
Syntax - Members
[Dimension].[Attribute].[Member] [Date].[Year].[2013] [Date].[Date].[2013-02-20] [Customer].[Customer].[Waitrose] [Customer].[Country].[UK] [Date].[Year].CURRENTMEMBER
Syntax - Sets
{ MEMBER1, MEMBER2, MEMBER3 }
Syntax - Tuples
( MEMBER, MEMBER, ) ([Date].[Year].[2012], [Customer].[Customer].[Waitrose]) ([Date].[Year].[2012], [Customer].[Customer].[Waitrose], [Product].[Product].[Banana])
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
Employee
Dimension Navigation
DESCENDANTS
ANCESTORS
PARENT
CHILDREN SIBLINGS
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
www.PurpleFrogSystems.com www.PurpleFrogSystems.com/blog
Alex@PurpleFrogSystems.com @PurpleFrogSys