Question & Answer
Question
When using under Alphablox API's (like metadata and calculated member APIs) against multi-dimensional data, it is important to understand unique names vs display names and aliases and where to use which ones.
Answer
This note contains the following information pertaining to understanding DB2 Alphablox® multi-dimensional result set unique names versus display names and aliases.
- Overview
- Rules of Thumb
- Unique Names
- MDX Unique Names
- Essbase Unique Names
- Display Names
- MSAS Display Names
- Essbase Display Names
Overview
There is often a difference between the name of a member displayed in a Blox and the name of the member used in our API's. MDX DataSources like IBM and Alphablox Cubing service or Microsoft® Analysis Services (MSAS) fully qualified member names, Essbase shared members, and prefix and suffix stripping, all create this scenario. Following are some tips in how to identify, access, and use the appropriate member name for your particular needs.
Rules of Thumb
In general,
- Use unique names in most API calls that take a member name.
- Use display names if generating UI that the user will see.
Unique Names
In DB2 Alphablox, unique names are the names of the members as they exist in our result set. They are different between Essbase and MDX data sources (like Alphablox Cubes, MSAS, etc...)
MDX Unique Names
There are multiple Multi-dimensional back ends for which Alphablox uses MDX as opposed to Essbase Report Spec (i.e. Alphablox cubes, . MSAS, etc...). For DB2 Alphablox, this is the fully qualified name of a member as in:.
[Locations].[All Locations].[Central].[Colorado].[Aspen]
or in the case of a dimensions with multiple hierarchies under MSAS as in the QCC time dimension:
[Time].[Calendar].[2000]
When resolving members against MDX data sources, prefix the member name with the cube name for performance reasons. It prevents the member attempting to be resolved against all dimensions in all cubes in the database. For IBM/Alphablox cubes, it is required in either case.
Note: do not use [Time.Calendar] in DB2 Alphablox APIs. While it works in some places, it does not work in all APIs.
Essbase Unique Names
For Alphablox, this is the Essbase Base member name in the outline (not the alias name) if the member is not shared. If the member is an Essbase shared member, the Alphablox unique name is the "path to" the shared member with base names separated by ASCII 1's. For example, the base name & unique name of "Diet Cola" is:
100-20
The unique name of the shared member "Diet Cola" under "Diet Drinks" is:
Product?Diet?100-20 (the "?"'s or smiley faces are ascii 1's)
To get a member's base name using the Metadata API's , regardless of whether or not it is a shared member, you can do:
String uniqueName = member.getUniqueName();
int li = uniqueName.lastIndexOf( '\u0001' );
String memberName = uniqueName;
if( li != -1 )
{
memberName = uniqueName.substring( li+ 1 );
}
The display name is exactly what is displayed in the grid. e.g. the member name with any characters removed that would be removed by Alphablox prefix or suffix stripping ( memberNameRemovePrefix & memberNameRemoveSuffix )
MDX Display Names
Alphablox display names for MDX members do not contain the hierarchy, the "[]" characters, or characters removed by removed prefix and suffix stripping ( e.g. Aspen, not [Locations].[Aspen]).
Essbase Display Names
The Alphablox display name for a member is the alias name if useAliases is enabled, otherwise, it is the Essbase base member name less characters removed by removed prefix and suffix stripping . i.e. if aliases were turned off on the DataBlox, Diet Colas would appear as:
100-20
otherwise, as:
Diet Cola
regardless of whether it is the base member or shared member you are referring to.
Was this topic helpful?
Document Information
Modified date:
16 June 2018
UID
swg21177132