+ All Categories
Home > Documents > Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX)

Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX)

Date post: 04-Dec-2014
Category:
Upload: daniel-upton
View: 761 times
Download: 2 times
Share this document with a friend
Description:
Here's an original presentation I gave at the SoCal Business Intelligence User Group in 2008. On reviewing it, and although the underlying platforms have evolved since then, the topic still seems relevant.
28
Decision Lab . Net business intelligence is business performance _________________________________________________________________________________________________________________________________________________________________________________________ ________________________________________________________________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net [email protected] direct 760 525 3268 blog.decisionlab.net Carlsbad, CA Enhancing Dashboard Visuals with Multi-Dimensional Expressions(MDX) by Daniel Upton
Transcript
Page 1: Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX)

DecisionLab.Net

business intelligence is business performance _________________________________________________________________________________________________________________________________________________________________________________________

________________________________________________________________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net [email protected] direct 760 525 3268 blog.decisionlab.net Carlsbad, CA

Enhancing Dashboard

Visuals with

Multi-Dimensional

Expressions(MDX)

by Daniel Upton

Page 2: Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX)

______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net [email protected] direct 760.525.3268

Page 2 of 28 blog.decisionlab.net Carlsbad, CA

Business Level: Data visualization -- The good and the bad.

Bad? Good? Why?

This flow-map, by C.J. Minard – depicting vital aspects of Napoleon’s disastrous march on Russia -- is a famous pioneering data visualization due to the amount of information it conveys quickly and with high impact in a limited space. It plots several variables.

1. Size of the French army is depicted by the width of the bands; 2. Geographic location on a two-dimensional surface; 3. Direction of the movement of the advance (tan upper band) and retreat (black lower band); 4. the temperature on certain dates during the retreat (temp. during advance was deemed irrelevant)

Page 3: Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX)

______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net [email protected] direct 760.525.3268

Page 3 of 28 blog.decisionlab.net Carlsbad, CA

Bad? Good? Why?

Verdict: Bad (very)

Page 4: Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX)

______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net [email protected] direct 760.525.3268

Page 4 of 28 blog.decisionlab.net Carlsbad, CA

Technical Notes: These visualizations were created using MS PerformancePoint. As an ideal PerformancePoint data source, I created an MS Analysis Services 2005 OLAP cube. As a quick review, it supports…

1. Multiple measure groups (fact tables) in the same cube, thus one cube query can span multiple business processes. 2. One dimension may include many hierarchies (same primary key) 3. Referenced dimension relationships, wherein an outrigger dimension’s primary key connects via an intermediate

dimension’s foreign key, to facts. 4. Role-playing dimensions, wherein 1 dimension is connected multiple times to multiple foreign keys in one or more

measure groups.

Page 5: Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX)

______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net [email protected] direct 760.525.3268

Page 5 of 28 blog.decisionlab.net Carlsbad, CA

Page 6: Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX)

______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net [email protected] direct 760.525.3268

Page 6 of 28 blog.decisionlab.net Carlsbad, CA

Business Level: On same terms, what distinguishes custom-MDX-driven analytics from out-of-the-box OLAP-based ones? o For reporting/analytics, all schema designs require downstream filtering, aggregation,

ordering, calculated metrics and formatting. BI front-ends provide limited drag-n-drop querying sophistication. After the initial OLAP-wow factor fades, canned front-end graphic visuals often fall short of business requirements.

Page 7: Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX)

______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net [email protected] direct 760.525.3268

Page 7 of 28 blog.decisionlab.net Carlsbad, CA

o Without down-stream manipulations, (SQL, MDX), databases would have to physically store too much largely-redundant calculated data or, conversely, to provide only limited analytic metrics (no simple ratios, etc), requiring end users to scan carefully to identify problems or opportunities. Notice how hard it is below to find the reseller losses.

Page 8: Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX)

______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net [email protected] direct 760.525.3268

Page 8 of 28 blog.decisionlab.net Carlsbad, CA

o Custom-MDX provides a semantic layer of data calculations between OLAP cubes and end-users so that, among other things, we can easily create high-impact visualizations which bring key metrics (profit $’s, profit margin %’s) right up front for end users.

How? In SSAS, write simple MDX expressions that meaningfully translates ‘$’ into ‘%’. In PPS Chart Designer’s (non-stacked) Bar-Chart’s ‘Series’ field, drop in ‘%’ metric ABOVE ‘$’ metric (so the above chart line is in front of bars), thus creating a multi-axis chart with ‘%’ axis on right side.

Page 9: Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX)

______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net [email protected] direct 760.525.3268

Page 9 of 28 blog.decisionlab.net Carlsbad, CA

Q & A: Whether for visualization purpose or otherwise, where should various calculated metrics be crunched?

o Transactional databases: Metrics required for transactions (eg. Shipping, Tax, Total Price, Estimated Ship Date)

o ETL into Data Mart / Warehouse: Three categories… Non-dimensional metrics (fixed formulas) Highly processor-intensive metrics Metrics for which OLAP stored aggregation levels provide little

performance benefit (eg. Median) o Cube: Inherently dimensional metrics, meaning that metric

values vary importantly by dimension (time, product, geography) o Report/Dashboard/Spreadsheet:

Array of built-in “query-builder” (MDX and/or SQL) functionality to satisfy unique, report-specific metrics. Best for “one-offs”.

When standardizing, move upstream into OLAP database

Page 10: Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX)

______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net [email protected] direct 760.525.3268

Page 10 of 28 blog.decisionlab.net Carlsbad, CA

5. MDX Basics: MDX may be written as expressions in cube database itself, then consumed / queried like other cube members/attributes. Also, all queries against SSAS cubes are MDX queries. Examples…

Example A: MDX Expression in cube metadata (in BI Dev Studio’s SSAS Calculation Tab)

Create Member CurrentCube.[Measures].[Reseller Gross Profit Margin] As ( [Measures].[Reseller Sales Amount]

- [Measures].[Reseller Total Product Cost] ) / [Measures].[Reseller Sales Amount] ,Format_String = "Percent", Associated_Measure_Group = 'Reseller Sales'

Example B (in SSMS’s MDX Query Window): MDX Query against cube for a single report (with / without the above expression in cube)

With Member [Measures].[Reseller Gross Profit Margin] As ( [Measures].[Reseller Sales Amount]

- [Measures].[Reseller Total Product Cost] )/ [Measures].[Reseller Sales Amount] SELECT

{ [Measures].[Reseller Sales Amount], [Measures].[Reseller Gross Profit] , [Measures].[Reseller Gross Profit Margin] } ON COLUMNS, { [Product].[Category].[Category].ALLMEMBERS } * { [Promotion].[Promotion Type].[Promotion Type].ALLMEMBERS } ON ROWS FROM [Adventure Plays MDX] WHERE [Date].[Calendar Year].[Calendar Year].[CY 2003]

Page 11: Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX)

______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net [email protected] direct 760.525.3268

Page 11 of 28 blog.decisionlab.net Carlsbad, CA

Example C: MDX Named Set (also in cube metadata) CREATE SET CURRENTCUBE.[Selected Measures - Internet and Reseller Sales] AS {

[Measures].[Internet Order Quantity] ,[Measures].[Internet Freight Cost] ,[Measures].[Internet Average Unit Cost] ,[Measures].[Internet Total Product Cost] ,[Measures].[Internet Discount Percentage] ,[Measures].[Internet Sales Amount] ,[Measures].[Internet Tax Amount] ,[Measures].[Internet Ratio to Parent Product] ,[Measures].[Internet Ratio to All Products] ,[Measures].[Internet Gross Profit] ,[Measures].[Internet Gross Profit Margin] -- and,from another measure group

,[Measures].[Reseller Order Quantity] ,[Measures].[Reseller Freight Cost] ,[Measures].[Reseller Average Unit Cost] ,[Measures].[Reseller Total Product Cost] ,[Measures].[Reseller Discount Percentage] ,[Measures].[Discount Percentage] ,[Measures].[Reseller Sales Amount] ,[Measures].[Reseller Tax Amount] ,[Measures].[Internet Ratio to Parent Product] ,[Measures].[Internet Ratio to All Products] ,[Measures].[Reseller Gross Profit] ,[Measures].[Reseller Gross Profit Margin] };

Page 12: Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX)

______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net [email protected] direct 760.525.3268

Page 12 of 28 blog.decisionlab.net Carlsbad, CA

Establish an ad-hoc query capability (in PerformancePoint!!) Self-serve BI, anyone? Notice ‘Selected Measures’ filter, plus coinciding measures in Chart’s Series. This allows users to select from a long list of Measures in a PerformancePoint Analytic Chart.

How?: In SSAS, create “Selected Measures” MDX Named Set. In PPS Chart Designer, add “Selected

Measures” set into Analytic Chart’s “Series” field. In PPS dashboard designer, create “Member Select” (multi-select) filter (multi-select style) on same “Selected Measures” named set.

Page 13: Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX)

______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net [email protected] direct 760.525.3268

Page 13 of 28 blog.decisionlab.net Carlsbad, CA

User-Driven, Ad-Hoc Visualizations from ‘Ad Hoc’ PPS Dashboard Page Many Examples…

Now, same chart, filtered by user for new ‘Selected Measures”, open chart Window, change to Stacked Bar…

Now, same chart, use picks new measure, drills on Product Model, opens in new window, sorts large to small.

So, combining MDX w/ out-of-the-box PPS charting can yield effective ad-hoc visuals.

Page 14: Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX)

______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net [email protected] direct 760.525.3268

Page 14 of 28 blog.decisionlab.net Carlsbad, CA

Establish a standard time-series dimension against all existing cube metrics – without re-coding of the time-series calculations per metric - with resulting visualizations like...

The above example shows 3 user-chosen metrics from a long list of available ones.

Page 15: Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX)

______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net [email protected] direct 760.525.3268

Page 15 of 28 blog.decisionlab.net Carlsbad, CA

Add more time series statistical expressions to time calculations

dimension,with visualization results like…

Page 16: Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX)

______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net [email protected] direct 760.525.3268

Page 16 of 28 blog.decisionlab.net Carlsbad, CA

Same exact PPS Dashboard chart. User selects different measures, Quarters instead of

Months, different Time Calculations, opens window, chooses stacked bar

Same chart. User simply selects new directly comparative measure (now Resellers), opens

window, chooses stacked bar

So, combining MDX Named Sets, Time Calculations (w/ Named Set), and multiple user-

parameters supports significant ad-hoc analysis.

Page 17: Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX)

______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net [email protected] direct 760.525.3268

Page 17 of 28 blog.decisionlab.net Carlsbad, CA

Here, PPS Dashboard Designer (DD) and SQL BI Dev Studio (BIDS)

1. SSAS MDX Calc Scripting Tool: How not to lose a finger

a. Before modifying, save whole script onto Notepad (simple, effective)

b. Second, Parse frequently to ensure syntax validity

c. Third: Frequently unit test building-block MDX code via cube browser

2. PPS Multi-Axis Chart Trick in DD (Amounts on Y1, Percents on Y2)

a. In Analytic Chart designer, drop percentage measure ABOVE non-percentage

measure, so that (percent) line stays in front of (not obstructed by) bars (non-

percents).

3. MDX Use of “Prior Period” (dynamically level-sensitive). Simple example of

dynamics of MDX.

4. MDX ”Named Sets” (underutilized) as Supplement to Individual measures

Page 18: Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX)

______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net [email protected] direct 760.525.3268

Page 18 of 28 blog.decisionlab.net Carlsbad, CA

5. All-MDX Time Utility Dimension…

a. Demonstrate (in SSAS Cube Browser) the robustness of Time Utlity Dimension

b. How To Build It in BI Dev Studio 2005: To do…

i. Open a BIDS SSAS project with an existing time dimension.

ii. In Data Source View (DSV), in time dimension, add new named calculation for new field named “PeriodID” with value = N’Current

Period’. Why?: Will serve as an SSAS dimension foreign-key value from Date (intermediate) dimension to “Time Calculations

(referenced) dimension (to be built momentarily).

iii. To Do: Create “Time Calculations” dimension

1. Create new (standard) dimension, using “Date” as main dimension table, with ‘PeriodID’ as key column and member

name column.

2. Name new dimension “Time Calculations”. Rename attribute to “Time Calculations”

3. Attribute Properties: IsAggregatable = “False”, since we don’t want to aggregate things like “Current Period + YTD + ‘Prior

Year’, etc. As such, although the Time Calculation dimension attributes effectively use all other SSAS aggregations, they

are not, in themselves, aggregatable.

4. Save and Process dimension

iv. To Do: Add Time Calcs… dimension to cube

1. Dimension Usage: Set as referenced dimension to selected measure group, via ‘Time’ intermediate dimension.

2. Do same for other measure groups via Time dimension.

v. (Recommended) To Do: Simplify MDX Calcs by Excluding Dimension Name, which is same as attribute (field) name.

1. Cube Structure, Time Calculations Dimension Property: HierarchyUniqueNameStyle: select “ExcludeDimensionName”

2. Save All, Re-Deploy Cube

Page 19: Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX)

______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net [email protected] direct 760.525.3268

Page 19 of 28 blog.decisionlab.net Carlsbad, CA

vi. Copy the following script into Notepad, then click Notepad’s “Edit / Replace”. With cursor at top of script, type in script’s existing

Time (not Time Calculations) dimension name and iteratively replace it with the correct name of your Time (intermediate)

dimension (if not simply named ‘Date’, as in this example).

vii. Copy/paste your newly-edited script back into BIDS SSAS Calc page and parse to ensure conformity.

viii. Sample “Time Calculations” MDX Script: Copy, paste (after renaming attributes to reference your own Time Dimension. (eg.

dimOrderDate)

--********************************************************************************************************************************************************************

-- TIME CALCULATIONS (Populates MDX Shell Dimension)

-- ********************************************************************************************************************************************************************

-- Create the calculated members...

CREATE MEMBER CURRENTCUBE.[Time Calculations].[Prior Year] AS Null;

CREATE MEMBER CURRENTCUBE.[Time Calculations].[Prior Year Change] AS Null;

CREATE MEMBER CURRENTCUBE.[Time Calculations].[Prior Year Change %] AS

IIF([Time Calculations].[Prior Year]=0,NULL,

[Time Calculations].[Prior Year Change] / [Time Calculations].[Prior Year]),

FORMAT_STRING="Percent";

CREATE MEMBER CURRENTCUBE.[Time Calculations].[Prior Period] AS Null;

CREATE MEMBER CURRENTCUBE.[Time Calculations].[Prior Period Change] AS Null;

CREATE MEMBER CURRENTCUBE.[Time Calculations].[Prior Period Change %] AS

IIF([Time Calculations].[Prior Period]=0,NULL,

[Time Calculations].[Prior Period Change] / [Time Calculations].[Prior Period]),

Page 20: Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX)

______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net [email protected] direct 760.525.3268

Page 20 of 28 blog.decisionlab.net Carlsbad, CA

FORMAT_STRING="Percent";

CREATE MEMBER CURRENTCUBE.[Time Calculations].[YTD] AS Null;

CREATE MEMBER CURRENTCUBE.[Time Calculations].[YTD Prior Year] AS Null;

CREATE MEMBER CURRENTCUBE.[Time Calculations].[YTD Prior Year Change] AS Null;

CREATE MEMBER CURRENTCUBE.[Time Calculations].[YTD Prior Year Change %] AS

IIF([Time Calculations].[YTD Prior Year]=0,NULL,

[Time Calculations].[YTD Prior Year Change] / [Time Calculations].[YTD Prior Year]),

FORMAT_STRING="Percent";

-- PRIOR YEAR CALCULATIONS

([Time Calculations].[Prior Year]=

(ParallelPeriod

( [Date].[Calendar].[Calendar Year], 1,[Date].[Calendar].currentmember

) ,[Time Calculations].[Current Period]

));

-- PRIOR PERIOD CALCULATIONS

([Time Calculations].[Prior Period]=

IIF(([Calendar].currentmember.lag(1),[Time Calculations].[Current Period])=0,null,

([Calendar].currentmember.lag(1),

[Time Calculations].[Current Period])));

-- YTD CALCULATIONS ----------------------------

Page 21: Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX)

______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net [email protected] direct 760.525.3268

Page 21 of 28 blog.decisionlab.net Carlsbad, CA

([Time Calculations].[YTD]=Aggregate(

CrossJoin({[Time Calculations].[Current Period]},

PeriodsToDate([Date].[Calendar].[Calendar Year],

[Calendar].currentmember))));

-- YTD PRIOR YEAR

([Time Calculations].[YTD Prior Year]=Aggregate(

Crossjoin( {[Time Calculations].[Current Period]},

PeriodsToDate

( [Date].[Calendar].[Calendar Year],

ParallelPeriod

( [Date].[Calendar].[Calendar Year],1,

[Date].[Calendar].CurrentMember ) ) ) ) );

-- Variances which don't depend on a particular hierarchy level

-- Prior Year Change

([Time Calculations].[Prior Year Change]=[Time Calculations].[Current Period] - [Time Calculations].[Prior Year]);

-- Prior Period Change

([Time Calculations].[Prior Period Change] =[Time Calculations].[Current Period] - [Time Calculations].[Prior Period]);

-- YTD Prior Year Change

([Time Calculations].[YTD Prior Year Change] =[Time Calculations].[YTD] - [Time Calculations].[YTD Prior Year]);

-- ***************************************

Page 22: Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX)

______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net [email protected] direct 760.525.3268

Page 22 of 28 blog.decisionlab.net Carlsbad, CA

-- Begin Section: Rolling averages (3, 6, 12mos)

-- 3 Month

Create Member CurrentCube.[Time Calculations].[Rolling 3 Month Avg] As NULL;

([Time Calculations].[Rolling 3 Month Avg] = Avg(

{ ParallelPeriod( [Date].[Calendar].[Month],2, [Date].[Calendar].CurrentMember ) : [Date].[Calendar].CurrentMember

}, [Time Calculations].DefaultMember) );

-- 6 Month

Create Member CurrentCube.[Time Calculations].[Rolling 6 Month Avg] As NULL;

([Time Calculations].[Rolling 6 Month Avg] = Avg(

{ ParallelPeriod( [Date].[Calendar].[Month], 5, [Date].[Calendar].CurrentMember ) : [Date].[Calendar].CurrentMember },

[Time Calculations].DefaultMember ));

-- 12 Month

Create Member CurrentCube.[Time Calculations].[Rolling 12 Month Avg] As NULL;

([Time Calculations].[Rolling 12 Month Avg] = Avg({

ParallelPeriod( [Date].[Calendar].[Month],11, [Date].[Calendar].CurrentMember ) : [Date].[Calendar].CurrentMember },

[Time Calculations].DefaultMember ) );

-- End of Section: Rolling Averages

-- ****************************************

-- Begin Section: 3,6,12 Mo. Rolling Avgs +/- 1 or 2 Std Devs

-- 3 Months ********************

Page 23: Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX)

______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net [email protected] direct 760.525.3268

Page 23 of 28 blog.decisionlab.net Carlsbad, CA

-- Establish Display Order

CREATE MEMBER CURRENTCUBE.[Time Calculations].[Rolling 3 Month Standard Deviation] AS NULL, VISIBLE = 1;

CREATE MEMBER CURRENTCUBE.[Time Calculations].[Rolling 3 Month Avg + 1 StdDev] AS NULL, VISIBLE = 1;

CREATE MEMBER CURRENTCUBE.[Time Calculations].[Rolling 3 Month Avg + 2 StdDevs] AS NULL, VISIBLE = 1;

CREATE MEMBER CURRENTCUBE.[Time Calculations].[Rolling 3 Month Avg - 1 StdDev] AS NULL, VISIBLE = 1;

CREATE MEMBER CURRENTCUBE.[Time Calculations].[Rolling 3 Month Avg - 2 StdDevs] AS NULL, VISIBLE = 1;

-- Establish Actual Calculated Values

([Time Calculations].[Rolling 3 Month Standard Deviation] = Stdev( { ParallelPeriod( [Date].[Calendar].[Month],

2, [Date].[Calendar].CurrentMember) : [Date].[Calendar].CurrentMember }, [Time Calculations].DefaultMember ));

([Time Calculations].[Rolling 3 Month Avg + 1 StdDev] = [Time Calculations].[Rolling 3 Month Avg] + [Time Calculations].[Rolling 3 Month Standard

Deviation]);

([Time Calculations].[Rolling 3 Month Avg - 1 StdDev] = [Time Calculations].[Rolling 3 Month Avg] - [Time Calculations].[Rolling 3 Month Standard

Deviation]);

([Time Calculations].[Rolling 3 Month Avg + 2 StdDevs] = [Time Calculations].[Rolling 3 Month Avg] + (2*[Time Calculations].[Rolling 3 Month

Standard Deviation]));

([Time Calculations].[Rolling 3 Month Avg - 2 StdDevs] = [Time Calculations].[Rolling 3 Month Avg] - (2*[Time Calculations].[Rolling 3 Month

Standard Deviation]));

-- 6 Months ********************

-- Establish Display Order without effecting solve order

CREATE MEMBER CURRENTCUBE.[Time Calculations].[Rolling 6 Month Standard Deviation] AS NULL, VISIBLE = 1;

CREATE MEMBER CURRENTCUBE.[Time Calculations].[Rolling 6 Month Avg + 1 StdDev] AS NULL, VISIBLE = 1;

CREATE MEMBER CURRENTCUBE.[Time Calculations].[Rolling 6 Month Avg + 2 StdDevs] AS NULL, VISIBLE = 1;

Page 24: Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX)

______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net [email protected] direct 760.525.3268

Page 24 of 28 blog.decisionlab.net Carlsbad, CA

CREATE MEMBER CURRENTCUBE.[Time Calculations].[Rolling 6 Month Avg - 1 StdDev] AS NULL, VISIBLE = 1;

CREATE MEMBER CURRENTCUBE.[Time Calculations].[Rolling 6 Month Avg - 2 StdDevs] AS NULL, VISIBLE = 1;

-- Establish Actual Calculated Values

([Time Calculations].[Rolling 6 Month Standard Deviation] = Stdev( { ParallelPeriod( [Date].[Calendar].[Month], 5, [Date].[Calendar].CurrentMember

) : [Date].[Calendar].CurrentMember }, [Time Calculations].DefaultMember ));

([Time Calculations].[Rolling 6 Month Avg + 1 StdDev] = [Time Calculations].[Rolling 6 Month Avg] + [Time Calculations].[Rolling 6 Month Standard

Deviation]);

([Time Calculations].[Rolling 6 Month Avg - 1 StdDev] = [Time Calculations].[Rolling 6 Month Avg] - [Time Calculations].[Rolling 6 Month Standard

Deviation]);

([Time Calculations].[Rolling 6 Month Avg + 2 StdDevs] = [Time Calculations].[Rolling 6 Month Avg] + (2*[Time Calculations].[Rolling 6 Month

Standard Deviation]));

([Time Calculations].[Rolling 6 Month Avg - 2 StdDevs] = [Time Calculations].[Rolling 6 Month Avg] - (2*[Time Calculations].[Rolling 6 Month

Standard Deviation]));

-- 12 Months ********************

-- Establish Display Order

CREATE MEMBER CURRENTCUBE.[Time Calculations].[Rolling 12 Month Standard Deviation] AS NULL, VISIBLE = 1;

CREATE MEMBER CURRENTCUBE.[Time Calculations].[Rolling 12 Month Avg + 1 StdDev] AS NULL, VISIBLE = 1;

CREATE MEMBER CURRENTCUBE.[Time Calculations].[Rolling 12 Month Avg + 2 StdDevs] AS NULL, VISIBLE = 1;

CREATE MEMBER CURRENTCUBE.[Time Calculations].[Rolling 12 Month Avg - 1 StdDev] AS NULL, VISIBLE = 1;

CREATE MEMBER CURRENTCUBE.[Time Calculations].[Rolling 12 Month Avg - 2 StdDevs] AS NULL, VISIBLE = 1;

-- Establish Actual Calculated Values

([Time Calculations].[Rolling 12 Month Standard Deviation] = Stdev( { ParallelPeriod( [Date].[Calendar].[Month], 11, [Date].[Calendar].CurrentMember

Page 25: Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX)

______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net [email protected] direct 760.525.3268

Page 25 of 28 blog.decisionlab.net Carlsbad, CA

) : [Date].[Calendar].CurrentMember }, [Time Calculations].DefaultMember ));

([Time Calculations].[Rolling 12 Month Avg + 1 StdDev] = [Time Calculations].[Rolling 12 Month Avg] + [Time Calculations].[Rolling 12 Month

Standard Deviation]);

([Time Calculations].[Rolling 12 Month Avg - 1 StdDev] = [Time Calculations].[Rolling 12 Month Avg] - [Time Calculations].[Rolling 12 Month

Standard Deviation]);

([Time Calculations].[Rolling 12 Month Avg + 2 StdDevs] = [Time Calculations].[Rolling 12 Month Avg] + (2*[Time Calculations].[Rolling 12 Month

Standard Deviation]));

([Time Calculations].[Rolling 12 Month Avg - 2 StdDevs] = [Time Calculations].[Rolling 12 Month Avg] - (2*[Time Calculations].[Rolling 12 Month

Standard Deviation]));

-- End of Section: 3,6,12 Mo. Rolling Avgs +/- 1 or 2 Std Devs

-- End of Time Series Calculations (Populates MDX Shell Dimension)

-- ***--

**********************************************************************************************************************************************************************

*******************************************************************************************************************************************************************

ix. Next To Do: Parse newly copied script to ensure MDX conformity.

x. Save All, then Re-deploy project.

xi. Cube Browser: Drop a Date (intermediate dimension) hierarchy onto rows, Time Calculations onto columns and a few selected

measures into main data section.

xii. Reference: Shroyer, David, OLAP Solutions. Link: http://www.obs3.com/

Page 26: Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX)

______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net [email protected] direct 760.525.3268

Page 26 of 28 blog.decisionlab.net Carlsbad, CA

6. Now, Return to PPS Dashboard Designer

a. Browse (first) previewed dashboard to revisit all discussed solution concepts

b. Optionally: re-build various reports / filters / dashboard zones / zone settings / cache / image.

c. Questions and Answers

Page 27: Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX)

______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net [email protected] direct 760.525.3268

Page 27 of 28 blog.decisionlab.net Carlsbad, CA

Thank you!

__________________________________________________________________

Enhancing Dashboard Visualizations With

Multi-Dimensional Expressions (MDX)

Presented by Daniel Upton

DecisionLab.Net __________________________________________________________________

Blog: blog.decisionlab.net

Site: www.decisionlab.net

Email: [email protected]

Page 28: Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX)

______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net [email protected] direct 760.525.3268

Page 28 of 28 blog.decisionlab.net Carlsbad, CA

DecisionLab.Net Range of BI / DW Services Offered:

_________________________________________

Business Requirements / Feasibility Analysis for Data Warehousing and Business Intelligence Logical Data Architecture: Integration of Related Business Processes Into Common Analytic Schema Physical DW/DM Design and Development Data Extraction, Transformation, Loading (SSIS): When others won’t. Multi-Dimensional Cubes w/ MS Analysis Services (SSAS)

Fewer, faster, more granular & more comprehensive cubes

Multiple complex business processes per cube

Multi-Dimensional Expressions (MDX) Dashboard Development: MS PerformancePoint, Tableau, et al Report Development: MS Reporting Services (SSRS)


Recommended