MDX Essentials: String Functions: The .Name Function

About the Series …

This article is a member of the series, MDX Essentials.
The series is designed to provide hands-on application of the fundamentals of
the Multidimensional Expressions (MDX) language, with each tutorial
progressively adding features designed to meet specific real-world needs.

For more information about the series in general, as well as
the software and systems requirements for getting the most out of the lessons
included, please see my first article, MDX at First Glance: Introduction to MDX Essentials.

Note: Current updates are assumed for MSSQL
, MSSQL Server Analysis Services, and the related Books
and Samples.


this lesson, we will expose another popular function in the MDX toolset, the .Name
function. The general purpose of the .Name function is,
unsurprisingly, to return the name of the object to which it is
appended. It can be used with hierarchies, dimensions, levels,
and members, so it is easy to see that .Name offers a great deal
of flexibility. For that matter, I have found in working with MDX in Analysis
, as well as in Reporting Services and various other
reporting applications, that the .Name function allows us to exercise a
great deal of presentation sleight of hand, at times.

The .Name
function can be leveraged in activities that range from generating simple lists
to supporting sophisticated presentations. We will introduce the function,
commenting upon its operation and touching upon the creative sorts of effects
that we can employ it to deliver. As a part of our discussion, we will:

  • Examine the syntax surrounding the function;

  • Undertake illustrative examples of the uses of the function in
    practice exercises;

  • Briefly discuss the results datasets we obtain in the practice

The .Name Function


According to the Analysis Services
Books Online
, the .Name function "returns the name of a level, dimension, member, or hierarchy." .Name
has many applications, including its use with these Analysis Services objects, as well as its pairing with other MDX
functions to leverage its power even further. As an illustration, I use it
constantly with the .CurrentMember function; we will see an example of
this combination within our practice exercises later.

We will examine the syntax for the .Name
function after a brief discussion in the next section. We will then explore some
of the "presentation leverage" it offers the knowledgeable user using
practice examples for a couple of scenarios, constructed to support
hypothetical business needs that illustrate uses for the function. This will
allow us to activate what we explore in the Discussion and Syntax
sections, where we will get some hands-on exposure in creating expressions that
leverage the .Name function.


To restate our initial explanation of its operation, the .Name
function, when acting upon a level, dimension, member,
or hierarchy, returns the name of the object to which it is appended
with the period (".") delimiter. .Name can be used for a great
deal more than the support of simple lists of object names, as we have
intimated. When coupled with other functions, as we shall see, we can leverage
.Name to deliver a wide range of analysis and reporting utility.

The Name function returns the name of the object, not
the unique name (the "fully qualified" name in MDX), which is
returned via the .UniqueName function. (We will examine the .UniqueName
function in the next article of this series, where we will continue an example
we begin at the end of our practice session here as a prelude to an exercise
where we use .Name and .UniqueName together to produce a dataset
for a specific objective.)

Let’s look at some syntax illustrations to further clarify
the operation of .Name.


Syntactically, in using the .Name
function to return the associated name, the object upon which we seek to
apply the .Name function is specified to the left of .Name. The
function takes the object to which it is appended as its argument, and
returns within a string the name of the object specified.
The general syntax is shown in the following string:

<<Object >>.Name

Using .Name could not be easier.
When using the function to return the name of one of the several objects
with which it works, we simply append it to the right of the object under
consideration. We can see a syntax example, for each of the objects for which .Name
can return a name, in Table 1 below.


Example of Use:






[Warehouse].[Warehouse City].Name


[Warehouse].[Warehouse City].[Seattle]. Name

Table 1: Examples Showing the .Name Function Employed with
Different Objects

As an example, the following

 [Warehouse].[Warehouse City]. Name

returns City, the name
of the Warehouse City level. As another
example, the following:

[Warehouse].[Warehouse City]. [Seattle]

returns Seattle, the name
of the Warehouse City level member Seattle. As is probably
obvious, the .Name function can be best leveraged by combining it with
other functions, particularly "relative" functions, to generate lists
of names, and so forth, as we will see in short order.

NOTE: For more information on several of the "relative"
functions, see my article MDX
Member Functions: "Relative" Member Functions
within the Database Journal MDX Essentials series.

We will practice some uses of the .Name function in
the section that follows.

William Pearson
William Pearson
Bill has been working with computers since before becoming a "big eight" CPA, after which he carried his growing information systems knowledge into management accounting, internal auditing, and various capacities of controllership. Bill entered the world of databases and financial systems when he became a consultant for CODA-Financials, a U.K. - based software company that hired only CPA's as application consultants to implement and maintain its integrated financial database - one of the most conceptually powerful, even in his current assessment, to have emerged. At CODA Bill deployed financial databases and business intelligence systems for many global clients. Working with SQL Server, Oracle, Sybase and Informix, and focusing on MSSQL Server, Bill created Island Technologies Inc. in 1997, and has developed a large and diverse customer base over the years since. Bill's background as a CPA, Internal Auditor and Management Accountant enable him to provide value to clients as a liaison between Accounting / Finance and Information Services. Moreover, as a Certified Information Technology Professional (CITP) - a Certified Public Accountant recognized for his or her unique ability to provide business insight by leveraging knowledge of information relationships and supporting technologies - Bill offers his clients the CPA's perspective and ability to understand the complicated business implications and risks associated with technology. From this perspective, he helps them to effectively manage information while ensuring the data's reliability, security, accessibility and relevance. Bill has implemented enterprise business intelligence systems over the years for many Fortune 500 companies, focusing his practice (since the advent of MSSQL Server 2000) upon the integrated Microsoft business intelligence solution. He leverages his years of experience with other enterprise OLAP and reporting applications (Cognos, Business Objects, Crystal, and others) in regular conversions of these once-dominant applications to the Microsoft BI stack. Bill believes it is easier to teach technical skills to people with non-technical training than vice-versa, and he constantly seeks ways to graft new technology into the Accounting and Finance arenas. Bill was awarded Microsoft SQL Server MVP in 2009. Hobbies include advanced literature studies and occasional lectures, with recent concentration upon the works of William Faulkner, Henry James, Marcel Proust, James Joyce, Honoré de Balzac, and Charles Dickens. Other long-time interests have included the exploration of generative music sourced from database architecture.

Get the Free Newsletter!

Subscribe to Cloud Insider for top news, trends & analysis

Latest Articles