SQL Server 2008 Building Business Intelligence Solutions · Set Functions (1) .Children Returns set...
Transcript of SQL Server 2008 Building Business Intelligence Solutions · Set Functions (1) .Children Returns set...
![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](https://reader034.fdocuments.net/reader034/viewer/2022050103/5f4241db04d82846354af2a3/html5/thumbnails/1.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050103/5f4241db04d82846354af2a3/html5/thumbnails/2.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050103/5f4241db04d82846354af2a3/html5/thumbnails/3.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050103/5f4241db04d82846354af2a3/html5/thumbnails/4.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050103/5f4241db04d82846354af2a3/html5/thumbnails/5.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050103/5f4241db04d82846354af2a3/html5/thumbnails/6.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050103/5f4241db04d82846354af2a3/html5/thumbnails/7.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050103/5f4241db04d82846354af2a3/html5/thumbnails/8.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050103/5f4241db04d82846354af2a3/html5/thumbnails/9.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050103/5f4241db04d82846354af2a3/html5/thumbnails/10.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050103/5f4241db04d82846354af2a3/html5/thumbnails/11.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050103/5f4241db04d82846354af2a3/html5/thumbnails/12.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050103/5f4241db04d82846354af2a3/html5/thumbnails/13.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050103/5f4241db04d82846354af2a3/html5/thumbnails/14.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050103/5f4241db04d82846354af2a3/html5/thumbnails/15.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050103/5f4241db04d82846354af2a3/html5/thumbnails/16.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050103/5f4241db04d82846354af2a3/html5/thumbnails/17.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050103/5f4241db04d82846354af2a3/html5/thumbnails/18.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050103/5f4241db04d82846354af2a3/html5/thumbnails/19.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050103/5f4241db04d82846354af2a3/html5/thumbnails/20.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050103/5f4241db04d82846354af2a3/html5/thumbnails/21.jpg)
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](https://reader034.fdocuments.net/reader034/viewer/2022050103/5f4241db04d82846354af2a3/html5/thumbnails/22.jpg)
October 11-14, Seattle, WA
Thank You Resources
Paul’s Blog……SqlServerBiBlog.com
SQL Server 2008 MDX Bryan C Smith, Ryan Clay Microsoft Press
SQL Server 2008 Analysis Services Scott Cameron Microsoft Press
21