Don - T Miss Out On Excel Cube Functions
Don - T Miss Out On Excel Cube Functions
Cube Functions
Meagan Longoria
BI Solutions Consultant at Valorem Consulting
Twitter: @mmarie
Blog: DataSavvy.wordpress.com
Who Am I and What Am I Doing Here?
2
Let’s Get Started
• Slides and examples are on the SQLSaturday site as well as my
blog. All examples use the AdventureWorks Tabular Cube.
• Questions are expected and welcomed throughout the
presentation.
• Audience Survey
What is your main function in your job (DBA/BI Developer/BA)?
Who has used OLAP/PowerPivot Pivot Tables?
Who can write MDX?
3
What Are Cube Functions?
• Another great tool in your report developer/business analyst
toolbox
• Introduced in Excel 2007
• Enable data from OLAP cubes and PowerPivot models to be
brought into Excel cells using functions
• Native to Excel, no add-ins needed to use cube functions (except
PowerPivot, if using that as your data source)
4
Advantages Over Pivot Tables
• Asymmetrical reporting – not limited to predefined pivot table
structure
• No loss of functionality when designing charts
• Easily add basic calculations to a report
• Combine data from multiple sources
• Easily add custom spacing, precise grouping and ordering
5
Advantages Over SSRS
• Excel users get a familiar interface and no need to learn VBA
expressions
• Easier to combine data from multiple sources in one table
• Referencing cells relative to position makes formulas shorter
• For those groups that use SSRS to export to Excel, it’s already in
Excel
• Doesn’t require a report server or SharePoint, and most people
already have Excel
6
Foundational Concepts
• Basic MDX/Cube concepts
Members
Sets
Measures/Values
Member Properties
KPIs
7
The Formulas
7 Easy Pieces
8
Cubemember
CUBEMEMBER(connection,member_expression,caption)
• Connection is a text string of the name of the connection to the cube.
• Member_expression is a text string of a multidimensional expression (MDX)
that evaluates to a unique member in the cube. Alternatively,
member_expression can be a tuple, specified as a cell range or an array
constant.
• Caption is a text string displayed in the cell instead of the caption, if one is
defined, from the cube. When a tuple is returned, the caption used is the one
for the last member in the tuple.
9
Cubevalue
CUBEVALUE(connection,member_expression1,member_expression2…)
• Connection is a text string of the name of the connection to the cube.
• Member_expression is a text string of a multidimensional expression (MDX) that
evaluates to a member or tuple within the cube. Alternatively, member_expression
can be a set defined with the CUBESET function. Use member_expression as a slicer
to define the portion of the cube for which the aggregated value is returned. If no
measure is specified in member_expression, the default measure for that cube is
used.
10
Cubeset
CUBESET(connection,set_expression,caption,sort_order,sort_by)
• Connection is a text string of the name of the connection to the cube.
• Set_expression is a text string of a set expression that results in a set of
members or tuples. Set_expression can also be a cell reference to an Excel
range that contains one or more members, tuples, or sets included in the set.
• Caption is a text string that is displayed in the cell instead of the caption, if one
is defined, from the cube.
• Sort_order is the type of sort, if any, to perform
11
Cubesetcount
CUBESETCOUNT(set)
• Set is a text string of a Microsoft Office Excel expression that evaluates to a set
defined by the CUBESET function. Set can also be the CUBESET function, or a
reference to a cell that contains the CUBESET function.
12
Cuberankedmember
CUBERANKEDMEMBER(connection,set_expression,rank,caption)
• Connection is a text string of the name of the connection to the cube.
• Set_expression is a text string of a set expression, such as "{[Item1].children}".
Set_expression can also be the CUBESET function, or a reference to a cell that
contains the CUBESET function.
• Rank is an integer value specifying the top value to return. If rank is a value of
1, it returns the top value, if rank is a value of 2, it returns the second most top
value, and so on. To return the top 5 values, use CUBERANKEDMEMBER five
times, specifying a different rank, 1 through 5, each time.
• Caption is a text string displayed in the cell instead of the caption, if one is
defined, from the cube.
13
Cubekpimember
CUBEKPIMEMBER(connection,kpi_name,kpi_property,caption)
• Connection is a text string of the name of the connection to the cube.
• Kpi_name is a text string of the name of the KPI in the cube.
• Kpi_property is the KPI component returned.
• Caption is an alternative text string that is displayed in the cell instead of
kpi_name and kpi_property.
14
Cubememberproperty
CUBEMEMBERPROPERTY(connection,member_expression,property)
• Connection is a text string of the name of the connection to the cube.
• Member_expression is a text string of a multidimensional expression (MDX) of a
member within the cube.
• Property is a text string of the name of the property returned or a reference to a cell
that contains the name of the property.
• No member properties in tabular SSAS.
• Memberproperties are used to display data that is helpful to see but will not be used
to slice (ex: address line 1)
• Example:
• CUBEMEMBERPROPERTY("Sales","[Store].[MyFavoriteStore]","[Store].[Store
Name].[Store Sqft]")
15
Quiz/Review
• CUBEKPIMEMBER
• CUBEMEMBER 1. Retrieve the Bikes product category
2. Determine the number of total subcategories
• CUBEMEMBERPROPERTY 3. Retrieve the total sales value
4. Define a custom group of subcategories that includes socks and tights
• CUBERANKEDMEMBER 5. Retrieve the Sales Territory with the second highest amount of sales
from the set of all sales territories
• CUBESET
• CUBESETCOUNT
• CUBEVALUE
16
Let’s Do This
Put Cube Functions to Work
17
Tips
• Intellisense is your friend
• Name your SSAS connection something short and clearly identifiable. Best
practice is to put your connection in a separate cell and reference it in
formulas.
• If member_expression is longer than 255 characters, which is the limit for
an argument to a function, CUBEMEMBER returns a #VALUE! error value.
To use text strings longer than 255 characters, enter the text string in a cell (for which
the limit is 32,767 characters), and then use a cell reference as the argument.
• Use IFERROR with cube formulas
• Use formula and value references to other cells
• You can use MDX functions in your cube functions (ex: lag, child, etc.)
• Use captions for more user-friendly labels
18
Put It All Together
• Extra formulas for ancillary calculations
• Indirect cell references
• Slicers
• Charts
• Demo
19
For More Info…
• Cube functions (reference): http://office.microsoft.com/en-us/excel-help/cube-
functions-reference-HA010083026.aspx
• PowerPivotPro Blog: http://www.powerpivotpro.com/2010/06/using-excel-cube-
functions-with-powerpivot/
• Excel Blog: http://blogs.office.com/b/microsoft-excel/archive/2006/02/02/the-excel-
12-blog-rides-again-or-cube-functions-part-1.aspx
• BI Memos Blog: http://bimemos.blogspot.com/2011/09/using-mdx-cube-functions-in-
excel.html
• ThatMSFTBIGuy Blog: http://thatmsftbiguy.com/excelcubefunction/
• Bob Phillips Blog: http://msmvps.com/blogs/xldynamic/archive/2012/12/16/cooking-
with-cubes.aspx
• Video- Benefits of Excel Cube Functions Over Pivot Tables:
http://www.youtube.com/watch?v=B-HBnAWRpL0
20
Questions and Final Comments
Meagan Longoria
BI Solutions Consultant
Twitter: @mmarie
Blog: DataSavvy.wordpress.com
Company website: ValoremConsulting.com
21
For More Fun
• SQL Saturday Kansas City
• September 14th
• Cerner Corporation's Riverport Campus, 6711 NE Birmingham Rd,
Kansas City, MO 64117
• Go to http://www.sqlsaturday.com/191/eventhome.aspx to
register
22