SlideShare una empresa de Scribd logo
1 de 28
Descargar para leer sin conexión
DecisionLab.Net
business intelligence is business performance
_________________________________________________________________________________________________________________________________________________________________________________________




      Enhancing Dashboard
          Visuals with
       Multi-Dimensional
        Expressions(MDX)

                                           by Daniel Upton
________________________________________________________________________________________________________________________________________________________________________________________
DecisionLab                                                                      www.decisionlab.net                                             dupton@decisionlab.net direct 760 525 3268
                                                                                 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)
______________________________________________________________________________________________________________________________________
DecisionLab                                           www.decisionlab.net                     info@decisionlab.net direct 760.525.3268
Page 2 of 28                                          blog.decisionlab.net                   Carlsbad, CA
Bad? Good? Why?




     Verdict: Bad (very)

______________________________________________________________________________________________________________________________________
DecisionLab                                           www.decisionlab.net                     info@decisionlab.net direct 760.525.3268
Page 3 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.




______________________________________________________________________________________________________________________________________
DecisionLab                                           www.decisionlab.net                     info@decisionlab.net direct 760.525.3268
Page 4 of 28                                          blog.decisionlab.net                   Carlsbad, CA
______________________________________________________________________________________________________________________________________
DecisionLab                                           www.decisionlab.net                     info@decisionlab.net direct 760.525.3268
Page 5 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.




______________________________________________________________________________________________________________________________________
DecisionLab                                           www.decisionlab.net                     info@decisionlab.net direct 760.525.3268
Page 6 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.




______________________________________________________________________________________________________________________________________
DecisionLab                                           www.decisionlab.net                     info@decisionlab.net direct 760.525.3268
Page 7 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.
______________________________________________________________________________________________________________________________________
DecisionLab                                           www.decisionlab.net                     info@decisionlab.net direct 760.525.3268
Page 8 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


______________________________________________________________________________________________________________________________________
DecisionLab                                           www.decisionlab.net                     info@decisionlab.net direct 760.525.3268
Page 9 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]


______________________________________________________________________________________________________________________________________
DecisionLab                                           www.decisionlab.net                     info@decisionlab.net direct 760.525.3268
Page 10 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]
                   };




______________________________________________________________________________________________________________________________________
DecisionLab                                           www.decisionlab.net                     info@decisionlab.net direct 760.525.3268
Page 11 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.

______________________________________________________________________________________________________________________________________
DecisionLab                                           www.decisionlab.net                     info@decisionlab.net direct 760.525.3268
Page 12 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.
______________________________________________________________________________________________________________________________________
DecisionLab                                           www.decisionlab.net                     info@decisionlab.net direct 760.525.3268
Page 13 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.

______________________________________________________________________________________________________________________________________
DecisionLab                                           www.decisionlab.net                     info@decisionlab.net direct 760.525.3268
Page 14 of 28                                         blog.decisionlab.net                   Carlsbad, CA
Add more time series statistical expressions to time calculations
dimension,with visualization results like…




______________________________________________________________________________________________________________________________________
DecisionLab                                           www.decisionlab.net                     info@decisionlab.net direct 760.525.3268
Page 15 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.
______________________________________________________________________________________________________________________________________
DecisionLab                                           www.decisionlab.net                     info@decisionlab.net direct 760.525.3268
Page 16 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




______________________________________________________________________________________________________________________________________
DecisionLab                                           www.decisionlab.net                     info@decisionlab.net direct 760.525.3268
Page 17 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


______________________________________________________________________________________________________________________________________
DecisionLab                                           www.decisionlab.net                     info@decisionlab.net direct 760.525.3268
Page 18 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]),

______________________________________________________________________________________________________________________________________
DecisionLab                                           www.decisionlab.net                     info@decisionlab.net direct 760.525.3268
Page 19 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 ----------------------------

______________________________________________________________________________________________________________________________________
DecisionLab                                           www.decisionlab.net                     info@decisionlab.net direct 760.525.3268
Page 20 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]);

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

______________________________________________________________________________________________________________________________________
DecisionLab                                           www.decisionlab.net                     info@decisionlab.net direct 760.525.3268
Page 21 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 ********************

______________________________________________________________________________________________________________________________________
DecisionLab                                           www.decisionlab.net                     info@decisionlab.net direct 760.525.3268
Page 22 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;
______________________________________________________________________________________________________________________________________
DecisionLab                                           www.decisionlab.net                     info@decisionlab.net direct 760.525.3268
Page 23 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
______________________________________________________________________________________________________________________________________
DecisionLab                                           www.decisionlab.net                     info@decisionlab.net direct 760.525.3268
Page 24 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/




______________________________________________________________________________________________________________________________________
DecisionLab                                           www.decisionlab.net                     info@decisionlab.net direct 760.525.3268
Page 25 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




______________________________________________________________________________________________________________________________________
DecisionLab                                           www.decisionlab.net                     info@decisionlab.net direct 760.525.3268
Page 26 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:                              dupton@decisionlab.net

______________________________________________________________________________________________________________________________________
DecisionLab                                           www.decisionlab.net                     info@decisionlab.net direct 760.525.3268
Page 27 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)
______________________________________________________________________________________________________________________________________
DecisionLab                                           www.decisionlab.net                     info@decisionlab.net direct 760.525.3268
Page 28 of 28                                         blog.decisionlab.net                   Carlsbad, CA

Más contenido relacionado

La actualidad más candente

Analytics and Information Architecture
Analytics and Information ArchitectureAnalytics and Information Architecture
Analytics and Information ArchitectureWilliam McKnight
 
Data warehousing in practice 2016
Data warehousing in practice 2016Data warehousing in practice 2016
Data warehousing in practice 2016Sjors Otten
 
Multidimensional Database Design & Architecture
Multidimensional Database Design & ArchitectureMultidimensional Database Design & Architecture
Multidimensional Database Design & Architecturehasanshan
 
Machine-Learning: Customer Segmentation and Analysis.
Machine-Learning: Customer Segmentation and Analysis.Machine-Learning: Customer Segmentation and Analysis.
Machine-Learning: Customer Segmentation and Analysis.Siddhanth Chaurasiya
 
BI Architecture in support of data quality
BI Architecture in support of data qualityBI Architecture in support of data quality
BI Architecture in support of data qualityTom Breur
 
Management of Bi-Temporal Properties of Sql/Nosql Based Architectures – A Re...
Management of Bi-Temporal Properties of  Sql/Nosql Based Architectures – A Re...Management of Bi-Temporal Properties of  Sql/Nosql Based Architectures – A Re...
Management of Bi-Temporal Properties of Sql/Nosql Based Architectures – A Re...lyn kurian
 
BI-TEMPORAL IMPLEMENTATION IN RELATIONAL DATABASE MANAGEMENT SYSTEMS: MS SQ...
BI-TEMPORAL IMPLEMENTATION IN  RELATIONAL DATABASE  MANAGEMENT SYSTEMS: MS SQ...BI-TEMPORAL IMPLEMENTATION IN  RELATIONAL DATABASE  MANAGEMENT SYSTEMS: MS SQ...
BI-TEMPORAL IMPLEMENTATION IN RELATIONAL DATABASE MANAGEMENT SYSTEMS: MS SQ...lyn kurian
 
Crystal xcelsius best practices and workflows for building enterprise solut...
Crystal xcelsius   best practices and workflows for building enterprise solut...Crystal xcelsius   best practices and workflows for building enterprise solut...
Crystal xcelsius best practices and workflows for building enterprise solut...Yogeeswar Reddy
 
Data warehousing in practice 2015
Data warehousing in practice 2015Data warehousing in practice 2015
Data warehousing in practice 2015Sjors Otten
 
An ontological approach to handle multidimensional schema evolution for data ...
An ontological approach to handle multidimensional schema evolution for data ...An ontological approach to handle multidimensional schema evolution for data ...
An ontological approach to handle multidimensional schema evolution for data ...ijdms
 
Customer exit variables in sap
Customer exit variables in sapCustomer exit variables in sap
Customer exit variables in sapsaborhade
 
A COMPARATIVE STUDY ON BIG DATA HANDLING USING RELATIONAL AND NON-RELATIONAL ...
A COMPARATIVE STUDY ON BIG DATA HANDLING USING RELATIONAL AND NON-RELATIONAL ...A COMPARATIVE STUDY ON BIG DATA HANDLING USING RELATIONAL AND NON-RELATIONAL ...
A COMPARATIVE STUDY ON BIG DATA HANDLING USING RELATIONAL AND NON-RELATIONAL ...IJDKP
 

La actualidad más candente (14)

Analytics and Information Architecture
Analytics and Information ArchitectureAnalytics and Information Architecture
Analytics and Information Architecture
 
Data warehousing in practice 2016
Data warehousing in practice 2016Data warehousing in practice 2016
Data warehousing in practice 2016
 
Multidimensional Database Design & Architecture
Multidimensional Database Design & ArchitectureMultidimensional Database Design & Architecture
Multidimensional Database Design & Architecture
 
Machine-Learning: Customer Segmentation and Analysis.
Machine-Learning: Customer Segmentation and Analysis.Machine-Learning: Customer Segmentation and Analysis.
Machine-Learning: Customer Segmentation and Analysis.
 
BI Architecture in support of data quality
BI Architecture in support of data qualityBI Architecture in support of data quality
BI Architecture in support of data quality
 
Management of Bi-Temporal Properties of Sql/Nosql Based Architectures – A Re...
Management of Bi-Temporal Properties of  Sql/Nosql Based Architectures – A Re...Management of Bi-Temporal Properties of  Sql/Nosql Based Architectures – A Re...
Management of Bi-Temporal Properties of Sql/Nosql Based Architectures – A Re...
 
BI-TEMPORAL IMPLEMENTATION IN RELATIONAL DATABASE MANAGEMENT SYSTEMS: MS SQ...
BI-TEMPORAL IMPLEMENTATION IN  RELATIONAL DATABASE  MANAGEMENT SYSTEMS: MS SQ...BI-TEMPORAL IMPLEMENTATION IN  RELATIONAL DATABASE  MANAGEMENT SYSTEMS: MS SQ...
BI-TEMPORAL IMPLEMENTATION IN RELATIONAL DATABASE MANAGEMENT SYSTEMS: MS SQ...
 
Crystal xcelsius best practices and workflows for building enterprise solut...
Crystal xcelsius   best practices and workflows for building enterprise solut...Crystal xcelsius   best practices and workflows for building enterprise solut...
Crystal xcelsius best practices and workflows for building enterprise solut...
 
Data warehousing in practice 2015
Data warehousing in practice 2015Data warehousing in practice 2015
Data warehousing in practice 2015
 
An ontological approach to handle multidimensional schema evolution for data ...
An ontological approach to handle multidimensional schema evolution for data ...An ontological approach to handle multidimensional schema evolution for data ...
An ontological approach to handle multidimensional schema evolution for data ...
 
Dwbi Project
Dwbi ProjectDwbi Project
Dwbi Project
 
Marcus Matthews
Marcus MatthewsMarcus Matthews
Marcus Matthews
 
Customer exit variables in sap
Customer exit variables in sapCustomer exit variables in sap
Customer exit variables in sap
 
A COMPARATIVE STUDY ON BIG DATA HANDLING USING RELATIONAL AND NON-RELATIONAL ...
A COMPARATIVE STUDY ON BIG DATA HANDLING USING RELATIONAL AND NON-RELATIONAL ...A COMPARATIVE STUDY ON BIG DATA HANDLING USING RELATIONAL AND NON-RELATIONAL ...
A COMPARATIVE STUDY ON BIG DATA HANDLING USING RELATIONAL AND NON-RELATIONAL ...
 

Destacado

SQL Server Analysis Services and MDX
SQL Server Analysis Services and MDXSQL Server Analysis Services and MDX
SQL Server Analysis Services and MDXMark Ginnebaugh
 
Ssis sql ssrs_sp_ssas_mdx_hb_li
Ssis sql ssrs_sp_ssas_mdx_hb_liSsis sql ssrs_sp_ssas_mdx_hb_li
Ssis sql ssrs_sp_ssas_mdx_hb_liHong-Bing Li
 
Citrix MDX Technologies Feature Brief
Citrix MDX Technologies Feature BriefCitrix MDX Technologies Feature Brief
Citrix MDX Technologies Feature BriefNuno Alves
 
Getting Started with MDX 20140625a
Getting Started with MDX 20140625aGetting Started with MDX 20140625a
Getting Started with MDX 20140625aRon Moore
 
Unlocking the Mystery of MDX
Unlocking the Mystery of MDXUnlocking the Mystery of MDX
Unlocking the Mystery of MDXDATAVERSITY
 
2012 Acura MDX Brochure | DCH Acura of Temecula
2012 Acura MDX Brochure | DCH Acura of Temecula2012 Acura MDX Brochure | DCH Acura of Temecula
2012 Acura MDX Brochure | DCH Acura of TemeculaDCH Acura of Temecula
 
Mdx university dubai courses
Mdx university dubai coursesMdx university dubai courses
Mdx university dubai coursesanjam tm
 
Business Intelligence Portfolio
Business Intelligence PortfolioBusiness Intelligence Portfolio
Business Intelligence PortfolioDoug Armantrout
 
Multidimensional expressions mdx - reference
Multidimensional expressions   mdx - referenceMultidimensional expressions   mdx - reference
Multidimensional expressions mdx - referenceSteve Xu
 
IBM Cognos Dimensional Dashboarding Techniques
IBM Cognos Dimensional Dashboarding TechniquesIBM Cognos Dimensional Dashboarding Techniques
IBM Cognos Dimensional Dashboarding TechniquesSenturus
 
Moore Advanced Calculations in Calc Manager OW 20151015
Moore Advanced Calculations in Calc Manager  OW 20151015Moore Advanced Calculations in Calc Manager  OW 20151015
Moore Advanced Calculations in Calc Manager OW 20151015Ron Moore
 
rmoore.smartquery KScope15
rmoore.smartquery KScope15rmoore.smartquery KScope15
rmoore.smartquery KScope15Ron Moore
 
Mdx 2nddraft
Mdx 2nddraftMdx 2nddraft
Mdx 2nddraftedarsoft
 
MDX (Multi Dimensional Expressions) Introduction
MDX (Multi Dimensional Expressions) IntroductionMDX (Multi Dimensional Expressions) Introduction
MDX (Multi Dimensional Expressions) IntroductionDigvendra Singh
 
MDX - What BI Developers Need To Know
MDX - What BI Developers Need To KnowMDX - What BI Developers Need To Know
MDX - What BI Developers Need To KnowMark Ginnebaugh
 
Ssis sql ssrs_ssas_sp_mdx_hb_li
Ssis sql ssrs_ssas_sp_mdx_hb_liSsis sql ssrs_ssas_sp_mdx_hb_li
Ssis sql ssrs_ssas_sp_mdx_hb_liHong-Bing Li
 

Destacado (20)

SQL Server Analysis Services and MDX
SQL Server Analysis Services and MDXSQL Server Analysis Services and MDX
SQL Server Analysis Services and MDX
 
Introduction to mdx query ppt
Introduction to mdx query pptIntroduction to mdx query ppt
Introduction to mdx query ppt
 
Ssis sql ssrs_sp_ssas_mdx_hb_li
Ssis sql ssrs_sp_ssas_mdx_hb_liSsis sql ssrs_sp_ssas_mdx_hb_li
Ssis sql ssrs_sp_ssas_mdx_hb_li
 
Citrix MDX Technologies Feature Brief
Citrix MDX Technologies Feature BriefCitrix MDX Technologies Feature Brief
Citrix MDX Technologies Feature Brief
 
Getting Started with MDX 20140625a
Getting Started with MDX 20140625aGetting Started with MDX 20140625a
Getting Started with MDX 20140625a
 
Mdx complex-queries-130019
Mdx complex-queries-130019Mdx complex-queries-130019
Mdx complex-queries-130019
 
Unlocking the Mystery of MDX
Unlocking the Mystery of MDXUnlocking the Mystery of MDX
Unlocking the Mystery of MDX
 
2012 Acura MDX Brochure | DCH Acura of Temecula
2012 Acura MDX Brochure | DCH Acura of Temecula2012 Acura MDX Brochure | DCH Acura of Temecula
2012 Acura MDX Brochure | DCH Acura of Temecula
 
Mdx university dubai courses
Mdx university dubai coursesMdx university dubai courses
Mdx university dubai courses
 
Business Intelligence Portfolio
Business Intelligence PortfolioBusiness Intelligence Portfolio
Business Intelligence Portfolio
 
Multidimensional expressions mdx - reference
Multidimensional expressions   mdx - referenceMultidimensional expressions   mdx - reference
Multidimensional expressions mdx - reference
 
IBM Cognos Dimensional Dashboarding Techniques
IBM Cognos Dimensional Dashboarding TechniquesIBM Cognos Dimensional Dashboarding Techniques
IBM Cognos Dimensional Dashboarding Techniques
 
Moore Advanced Calculations in Calc Manager OW 20151015
Moore Advanced Calculations in Calc Manager  OW 20151015Moore Advanced Calculations in Calc Manager  OW 20151015
Moore Advanced Calculations in Calc Manager OW 20151015
 
rmoore.smartquery KScope15
rmoore.smartquery KScope15rmoore.smartquery KScope15
rmoore.smartquery KScope15
 
MDX 2015-2019 Work Program Overview presentation, October 22, 2014
MDX 2015-2019 Work Program Overview presentation, October 22, 2014MDX 2015-2019 Work Program Overview presentation, October 22, 2014
MDX 2015-2019 Work Program Overview presentation, October 22, 2014
 
Mdx Basics
Mdx BasicsMdx Basics
Mdx Basics
 
Mdx 2nddraft
Mdx 2nddraftMdx 2nddraft
Mdx 2nddraft
 
MDX (Multi Dimensional Expressions) Introduction
MDX (Multi Dimensional Expressions) IntroductionMDX (Multi Dimensional Expressions) Introduction
MDX (Multi Dimensional Expressions) Introduction
 
MDX - What BI Developers Need To Know
MDX - What BI Developers Need To KnowMDX - What BI Developers Need To Know
MDX - What BI Developers Need To Know
 
Ssis sql ssrs_ssas_sp_mdx_hb_li
Ssis sql ssrs_ssas_sp_mdx_hb_liSsis sql ssrs_ssas_sp_mdx_hb_li
Ssis sql ssrs_ssas_sp_mdx_hb_li
 

Similar a Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX)

Lean Data Warehouse via Data Vault
Lean Data Warehouse via Data VaultLean Data Warehouse via Data Vault
Lean Data Warehouse via Data VaultDaniel Upton
 
Data Vault: Data Warehouse Design Goes Agile
Data Vault: Data Warehouse Design Goes AgileData Vault: Data Warehouse Design Goes Agile
Data Vault: Data Warehouse Design Goes AgileDaniel Upton
 
OLAP Cubes in Datawarehousing
OLAP Cubes in DatawarehousingOLAP Cubes in Datawarehousing
OLAP Cubes in DatawarehousingPrithwis Mukerjee
 
Microsoft MCSE 70-467 it exams dumps
Microsoft MCSE 70-467 it exams dumpsMicrosoft MCSE 70-467 it exams dumps
Microsoft MCSE 70-467 it exams dumpslilylucy
 
Rick Watkins Power Point presentation
Rick Watkins Power Point presentationRick Watkins Power Point presentation
Rick Watkins Power Point presentationrickwatkins
 
Data Analysis Project Presentation: Unveiling Your Ideal Customer, Bank Custo...
Data Analysis Project Presentation: Unveiling Your Ideal Customer, Bank Custo...Data Analysis Project Presentation: Unveiling Your Ideal Customer, Bank Custo...
Data Analysis Project Presentation: Unveiling Your Ideal Customer, Bank Custo...Boston Institute of Analytics
 
Rick Watkins Power Point Presentation on Automation efficiencies
Rick Watkins Power Point Presentation on Automation efficienciesRick Watkins Power Point Presentation on Automation efficiencies
Rick Watkins Power Point Presentation on Automation efficienciesrickwatkins
 
Power Point Presentation
Power Point PresentationPower Point Presentation
Power Point Presentationrickwatkins
 
Crucial decisions in designing a data warehouse
Crucial decisions in designing a data warehouseCrucial decisions in designing a data warehouse
Crucial decisions in designing a data warehouseManju Rajput
 
MS SQL SERVER: Using the data mining tools
MS SQL SERVER: Using the data mining toolsMS SQL SERVER: Using the data mining tools
MS SQL SERVER: Using the data mining toolsDataminingTools Inc
 
MS SQL SERVER: Using the data mining tools
MS SQL SERVER: Using the data mining toolsMS SQL SERVER: Using the data mining tools
MS SQL SERVER: Using the data mining toolssqlserver content
 
How to Realize an Additional 270% ROI on Snowflake
How to Realize an Additional 270% ROI on SnowflakeHow to Realize an Additional 270% ROI on Snowflake
How to Realize an Additional 270% ROI on SnowflakeAtScale
 
Analysis Services en SQL Server 2008
Analysis Services en SQL Server 2008Analysis Services en SQL Server 2008
Analysis Services en SQL Server 2008Eduardo Castro
 
Multidimentional data model
Multidimentional data modelMultidimentional data model
Multidimentional data modeljagdish_93
 
Designing the business process dimensional model
Designing the business process dimensional modelDesigning the business process dimensional model
Designing the business process dimensional modelGersiton Pila Challco
 
1.1 Introduction Business Analytics.pptx
1.1 Introduction Business Analytics.pptx1.1 Introduction Business Analytics.pptx
1.1 Introduction Business Analytics.pptxuthiramoorthyarumuga1
 
BUSINESS INTELIIGENCE AND ANALYTICS.pptx
BUSINESS INTELIIGENCE AND ANALYTICS.pptxBUSINESS INTELIIGENCE AND ANALYTICS.pptx
BUSINESS INTELIIGENCE AND ANALYTICS.pptxShamshadAli58
 

Similar a Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX) (20)

Lean Data Warehouse via Data Vault
Lean Data Warehouse via Data VaultLean Data Warehouse via Data Vault
Lean Data Warehouse via Data Vault
 
Data Vault: Data Warehouse Design Goes Agile
Data Vault: Data Warehouse Design Goes AgileData Vault: Data Warehouse Design Goes Agile
Data Vault: Data Warehouse Design Goes Agile
 
OLAP Cubes in Datawarehousing
OLAP Cubes in DatawarehousingOLAP Cubes in Datawarehousing
OLAP Cubes in Datawarehousing
 
Microsoft MCSE 70-467 it exams dumps
Microsoft MCSE 70-467 it exams dumpsMicrosoft MCSE 70-467 it exams dumps
Microsoft MCSE 70-467 it exams dumps
 
mod 2.pdf
mod 2.pdfmod 2.pdf
mod 2.pdf
 
Rick Watkins Power Point presentation
Rick Watkins Power Point presentationRick Watkins Power Point presentation
Rick Watkins Power Point presentation
 
Data Analysis Project Presentation: Unveiling Your Ideal Customer, Bank Custo...
Data Analysis Project Presentation: Unveiling Your Ideal Customer, Bank Custo...Data Analysis Project Presentation: Unveiling Your Ideal Customer, Bank Custo...
Data Analysis Project Presentation: Unveiling Your Ideal Customer, Bank Custo...
 
Rick Watkins Power Point Presentation on Automation efficiencies
Rick Watkins Power Point Presentation on Automation efficienciesRick Watkins Power Point Presentation on Automation efficiencies
Rick Watkins Power Point Presentation on Automation efficiencies
 
Power Point Presentation
Power Point PresentationPower Point Presentation
Power Point Presentation
 
Crucial decisions in designing a data warehouse
Crucial decisions in designing a data warehouseCrucial decisions in designing a data warehouse
Crucial decisions in designing a data warehouse
 
MS SQL SERVER: Using the data mining tools
MS SQL SERVER: Using the data mining toolsMS SQL SERVER: Using the data mining tools
MS SQL SERVER: Using the data mining tools
 
MS SQL SERVER: Using the data mining tools
MS SQL SERVER: Using the data mining toolsMS SQL SERVER: Using the data mining tools
MS SQL SERVER: Using the data mining tools
 
How to Realize an Additional 270% ROI on Snowflake
How to Realize an Additional 270% ROI on SnowflakeHow to Realize an Additional 270% ROI on Snowflake
How to Realize an Additional 270% ROI on Snowflake
 
Analytics
AnalyticsAnalytics
Analytics
 
Analysis Services en SQL Server 2008
Analysis Services en SQL Server 2008Analysis Services en SQL Server 2008
Analysis Services en SQL Server 2008
 
Course Outline Ch 2
Course Outline Ch 2Course Outline Ch 2
Course Outline Ch 2
 
Multidimentional data model
Multidimentional data modelMultidimentional data model
Multidimentional data model
 
Designing the business process dimensional model
Designing the business process dimensional modelDesigning the business process dimensional model
Designing the business process dimensional model
 
1.1 Introduction Business Analytics.pptx
1.1 Introduction Business Analytics.pptx1.1 Introduction Business Analytics.pptx
1.1 Introduction Business Analytics.pptx
 
BUSINESS INTELIIGENCE AND ANALYTICS.pptx
BUSINESS INTELIIGENCE AND ANALYTICS.pptxBUSINESS INTELIIGENCE AND ANALYTICS.pptx
BUSINESS INTELIIGENCE AND ANALYTICS.pptx
 

Enhancing Dashboard Visuals with Multi-Dimensional Expressions (MDX)

  • 1. DecisionLab.Net business intelligence is business performance _________________________________________________________________________________________________________________________________________________________________________________________ Enhancing Dashboard Visuals with Multi-Dimensional Expressions(MDX) by Daniel Upton ________________________________________________________________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net dupton@decisionlab.net direct 760 525 3268 blog.decisionlab.net Carlsbad, CA
  • 2. 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) ______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net info@decisionlab.net direct 760.525.3268 Page 2 of 28 blog.decisionlab.net Carlsbad, CA
  • 3. Bad? Good? Why? Verdict: Bad (very) ______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net info@decisionlab.net direct 760.525.3268 Page 3 of 28 blog.decisionlab.net Carlsbad, CA
  • 4. 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. ______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net info@decisionlab.net direct 760.525.3268 Page 4 of 28 blog.decisionlab.net Carlsbad, CA
  • 5. ______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net info@decisionlab.net direct 760.525.3268 Page 5 of 28 blog.decisionlab.net Carlsbad, CA
  • 6. 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. ______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net info@decisionlab.net direct 760.525.3268 Page 6 of 28 blog.decisionlab.net Carlsbad, CA
  • 7. 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. ______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net info@decisionlab.net direct 760.525.3268 Page 7 of 28 blog.decisionlab.net Carlsbad, CA
  • 8. 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. ______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net info@decisionlab.net direct 760.525.3268 Page 8 of 28 blog.decisionlab.net Carlsbad, CA
  • 9. 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 ______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net info@decisionlab.net direct 760.525.3268 Page 9 of 28 blog.decisionlab.net Carlsbad, CA
  • 10. 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] ______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net info@decisionlab.net direct 760.525.3268 Page 10 of 28 blog.decisionlab.net Carlsbad, CA
  • 11. 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] }; ______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net info@decisionlab.net direct 760.525.3268 Page 11 of 28 blog.decisionlab.net Carlsbad, CA
  • 12. 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. ______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net info@decisionlab.net direct 760.525.3268 Page 12 of 28 blog.decisionlab.net Carlsbad, CA
  • 13. 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. ______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net info@decisionlab.net direct 760.525.3268 Page 13 of 28 blog.decisionlab.net Carlsbad, CA
  • 14. 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. ______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net info@decisionlab.net direct 760.525.3268 Page 14 of 28 blog.decisionlab.net Carlsbad, CA
  • 15. Add more time series statistical expressions to time calculations dimension,with visualization results like… ______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net info@decisionlab.net direct 760.525.3268 Page 15 of 28 blog.decisionlab.net Carlsbad, CA
  • 16. 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. ______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net info@decisionlab.net direct 760.525.3268 Page 16 of 28 blog.decisionlab.net Carlsbad, CA
  • 17. 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 ______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net info@decisionlab.net direct 760.525.3268 Page 17 of 28 blog.decisionlab.net Carlsbad, CA
  • 18. 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 ______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net info@decisionlab.net direct 760.525.3268 Page 18 of 28 blog.decisionlab.net Carlsbad, CA
  • 19. 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]), ______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net info@decisionlab.net direct 760.525.3268 Page 19 of 28 blog.decisionlab.net Carlsbad, CA
  • 20. 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 ---------------------------- ______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net info@decisionlab.net direct 760.525.3268 Page 20 of 28 blog.decisionlab.net Carlsbad, CA
  • 21. ([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]); -- *************************************** ______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net info@decisionlab.net direct 760.525.3268 Page 21 of 28 blog.decisionlab.net Carlsbad, CA
  • 22. -- 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 ******************** ______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net info@decisionlab.net direct 760.525.3268 Page 22 of 28 blog.decisionlab.net Carlsbad, CA
  • 23. -- 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; ______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net info@decisionlab.net direct 760.525.3268 Page 23 of 28 blog.decisionlab.net Carlsbad, CA
  • 24. 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 ______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net info@decisionlab.net direct 760.525.3268 Page 24 of 28 blog.decisionlab.net Carlsbad, CA
  • 25. ) : [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/ ______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net info@decisionlab.net direct 760.525.3268 Page 25 of 28 blog.decisionlab.net Carlsbad, CA
  • 26. 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 ______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net info@decisionlab.net direct 760.525.3268 Page 26 of 28 blog.decisionlab.net Carlsbad, CA
  • 27. 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: dupton@decisionlab.net ______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net info@decisionlab.net direct 760.525.3268 Page 27 of 28 blog.decisionlab.net Carlsbad, CA
  • 28. 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) ______________________________________________________________________________________________________________________________________ DecisionLab www.decisionlab.net info@decisionlab.net direct 760.525.3268 Page 28 of 28 blog.decisionlab.net Carlsbad, CA