sql server 2008 building business intelligence solutions · set functions (1) .children returns set...

22
October 11-14, Seattle, WA MDX Essentails Paul Turley Mentor, SQL Server MVP

Upload: others

Post on 13-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SQL Server 2008 Building Business Intelligence Solutions · Set Functions (1) .Children Returns set a level below a member Descendants ( ) Returns set any level below a member (named

October 11-14, Seattle, WA

MDX Essentails

Paul Turley Mentor, SQL Server MVP

Page 2: SQL Server 2008 Building Business Intelligence Solutions · Set Functions (1) .Children Returns set a level below a member Descendants ( ) Returns set any level below a member (named

Introduction

Paul Turley Mentor, SQL Server MVP

SqlServerBiBlog.com

1

Page 3: SQL Server 2008 Building Business Intelligence Solutions · Set Functions (1) .Children Returns set a level below a member Descendants ( ) Returns set any level below a member (named

What Can You Do with a Cube?

2

> Destroy anything in its path

> Aggregate very large

volumes of data

> Assimilate entire civilizations

> Create a mega race of neo-humanoid androids with a single collective consciousness

> Present browse-able business information for self-service reporting

> Encapsulate complex

business rules into

predefined hierarchies,

calculations, business

measures and KPIs

> Create high-value

business reports that

render in a fraction of

the time of a

relational data source

Page 4: SQL Server 2008 Building Business Intelligence Solutions · Set Functions (1) .Children Returns set a level below a member Descendants ( ) Returns set any level below a member (named

The Business Data Continuum

3

Operational

Databases

Data Consolidation

& Transformation

(ETL)

Relational Data

Warehouse

OLAP Cubes

Reports, Charts,

Dashboards & Scorecards

Page 5: SQL Server 2008 Building Business Intelligence Solutions · Set Functions (1) .Children Returns set a level below a member Descendants ( ) Returns set any level below a member (named

MDX

M ulti

D imensional

eX pressions

• A query language developed & used by Microsoft

& other vendors for OLAP data products

• Part of the OLE DB for OLAP 1997 specification held

by Microsoft (not ANSI or ISO)

• Specification was written mainly by Mosha

Pasumansky from Microsoft, originally from

Panorama

4

Page 6: SQL Server 2008 Building Business Intelligence Solutions · Set Functions (1) .Children Returns set a level below a member Descendants ( ) Returns set any level below a member (named

Why Can’t I Use SQL?

Multidimensional

storage is a

fundamental paradigm

shift from relational

storage

MDX is optimized for

dimensional hierarchies

& not table/index

scans

5

Page 7: SQL Server 2008 Building Business Intelligence Solutions · Set Functions (1) .Children Returns set a level below a member Descendants ( ) Returns set any level below a member (named

Dimensional Data Warehouse Design

6

Date

Dimension

Employee

Dimension

Geography

Dimension

Customer

Dimension

Product

Dimension

Vendor

Dimension

Sales Fact

Page 8: SQL Server 2008 Building Business Intelligence Solutions · Set Functions (1) .Children Returns set a level below a member Descendants ( ) Returns set any level below a member (named

Dimensions

7

Dimension > Hierarchy > Level > Member

Page 9: SQL Server 2008 Building Business Intelligence Solutions · Set Functions (1) .Children Returns set a level below a member Descendants ( ) Returns set any level below a member (named

Measures

Organized in

measure groups

Derived from numeric

fields or SQL

calculations

8

Page 10: SQL Server 2008 Building Business Intelligence Solutions · Set Functions (1) .Children Returns set a level below a member Descendants ( ) Returns set any level below a member (named

Basic Query Syntax

SELECT < member or set > on < Columns | Axis(0) | 0 >, < member or set > on < Rows | Axis(1) | 1 > FROM < cube or subcube expression > WHERE < member or set > ;

SELECT { [Sales Amount], [Order Quantity] } on Columns, [Category].Members on Rows FROM [Adventure Works] WHERE [CY 2001] ;

9

Page 11: SQL Server 2008 Building Business Intelligence Solutions · Set Functions (1) .Children Returns set a level below a member Descendants ( ) Returns set any level below a member (named

Filtering

Slicer SELECT … on Columns, … on Rows FROM < cube name > WHERE { [Category].[Bikes], [Category].[Clothing] } ;

10

Subcube

SELECT … on Columns, … on Rows

FROM

(

SELECT { [Category].[Bikes], [Category].[Clothing] } on 0

FROM < cube name >

)

;

Page 12: SQL Server 2008 Building Business Intelligence Solutions · Set Functions (1) .Children Returns set a level below a member Descendants ( ) Returns set any level below a member (named

Sets

Combine members from same hierarchy using

braces

{ [Year].[2005], [Year].[2006] }

11

Page 13: SQL Server 2008 Building Business Intelligence Solutions · Set Functions (1) .Children Returns set a level below a member Descendants ( ) Returns set any level below a member (named

Tuples

Combine members from different hierarchies

using parentheses

( [Category].[Bikes], [Year].[2006] )

Add measure to return a value from the tuple:

(Measures.[Sales Amount]

, ( [Category].[Bikes], [Year].[2006] ) )

12

Page 14: SQL Server 2008 Building Business Intelligence Solutions · Set Functions (1) .Children Returns set a level below a member Descendants ( ) Returns set any level below a member (named

Calculated Members

Calculation added to Measures:

WITH Member [Measures].[Product Percent of Parent] AS

[Measures].[Sales Amount] / ( [Measures].[Sales Amount]

, [Product].[Product Categories].Parent )

, Format_String = "Percent"

Used in Query:

SELECT { [Measures].[Sales Amount]

, [Measures].[Product Percent of Parent] } on Columns

, NON EMPTY [Product Categories].Category.Members on Rows

FROM < cube name > ;

13

Page 15: SQL Server 2008 Building Business Intelligence Solutions · Set Functions (1) .Children Returns set a level below a member Descendants ( ) Returns set any level below a member (named

Calculated Members

Calculation added to Hierarchy:

WITH Member [Product].[Product Categories].[All].[Category Average] AS

Avg([Product].[Product Categories].[Category])

Used in Query:

SELECT { [Measures].[Sales Amount]

, [Measures].[Product Percent of Parent] } on Columns

, NON EMPTY [Product Categories].Category.AllMembers on Rows

FROM < cube name > ;

14

Page 16: SQL Server 2008 Building Business Intelligence Solutions · Set Functions (1) .Children Returns set a level below a member Descendants ( ) Returns set any level below a member (named

Member Functions

.CurrentMember Returns the current member of a hierarchy

Typically used in a calculated member expression

.Parent Returns the parent member of a member

Ancestor ( ) Returns a member at a level above a member

in a user hierarchy – by level name or distance

.PrevMember Returns a sibling or cousin one position prior

ParallelPeriod ( ) Returns a member at the same level and

ordinal position of a member, relative to a specified ancestor

.Item ( ) Returns a specified ordinal member of a set

IsEmpty ( ) Returns True for a tuple containing a value

Is Null Returns True if a member exists

15

Page 17: SQL Server 2008 Building Business Intelligence Solutions · Set Functions (1) .Children Returns set a level below a member Descendants ( ) Returns set any level below a member (named

Set Functions (1)

.Children Returns set a level below a member

Descendants ( ) Returns set any level below a member

(named level or distance from level)

Head ( ) Returns the first X members of a set

Tail ( ) Returns the last X members of a set

Union ( ) or

Set1 + Set2 Combines 2 sets into one set (Distinct or All)

Intersection ( ) Returns the common members of 2 sets

Except ( ) or

Set1 - Set2 Returns members of 1st set that don't exist in 2nd set

16

Page 18: SQL Server 2008 Building Business Intelligence Solutions · Set Functions (1) .Children Returns set a level below a member Descendants ( ) Returns set any level below a member (named

Set Functions (2)

Order ( ) Returns a set in the order of a specified member/measure

TopCount ( ) Returns top X ranking members based on a measure

Hierarchize ( ) Organizes & sorts members of a set by hierarchal structure. Typically used on Unioned sets .

Filter ( ) Filters a set based on a Boolean expression

Exists ( ) Filters one set by another set from the same dimension

Returns only members of the 1st set, not the 2nd set

NonEmpty ( ) Filters one set by a set from a different dimension

Returns only members of the 1st set, not the 2nd set

17

Page 19: SQL Server 2008 Building Business Intelligence Solutions · Set Functions (1) .Children Returns set a level below a member Descendants ( ) Returns set any level below a member (named

Set Functions (3)

Sum ( ) Returns a numeric sum for a measure over a set

Aggregate ( ) Like Sum() but uses the measure's AggregateFunction

LastPeriods ( ) Returns a set of previous periods including current

PeriodsToDate ( ) Returns a set of current level members sharing a

common time level ancestor

YTD ( ) Simplified PeriodsToDate( ) with fixed time level

QTD, MTD, WTD - YTD

Generate ( ) Returns a string from a set, concatenating a

member property separated by a specified delimeter

SetToStr ( ) Returns a string from a set.

Delimits full UniqueName reference for each member

separated by commas

18

Page 20: SQL Server 2008 Building Business Intelligence Solutions · Set Functions (1) .Children Returns set a level below a member Descendants ( ) Returns set any level below a member (named

Crossjoins

Same Dimension

Returns coexisting members

([Product].[Category].[Category], [Product].[Color].[Color])

([Product].[Category].[Category], [Product].[Color].[Red])

Different Dimensions

Returns Cartesian product

([Product].[Color].[Color], [Date].[Calendar Year].[Calendar Year])

([Product].[Color].[Color], [Date].[Calendar Year].[2001])

19

Page 21: SQL Server 2008 Building Business Intelligence Solutions · Set Functions (1) .Children Returns set a level below a member Descendants ( ) Returns set any level below a member (named

Questions

20

Page 22: SQL Server 2008 Building Business Intelligence Solutions · Set Functions (1) .Children Returns set a level below a member Descendants ( ) Returns set any level below a member (named

October 11-14, Seattle, WA

Thank You Resources

Paul’s Blog……SqlServerBiBlog.com

[email protected]

SQL Server 2008 MDX Bryan C Smith, Ryan Clay Microsoft Press

SQL Server 2008 Analysis Services Scott Cameron Microsoft Press

21