Verwendung von Zeichenfolgenfunktionen

Man kann in Multidimensional Expressions (MDX) auf fast jedem Objekt String-Funktionen verwenden. In gespeicherten Prozeduren verwendet man hauptsächlich String-Funktionen, um das Objekt in eine String-Darstellung umzuwandeln. Man verwendet außerdem Zeichenkettenfunktionen, um einen Zeichenkettenausdruck über einem Objekt auszuwerten, um einen Wert zurückzugeben.

Die am weitesten verbreiteten Zeichenkettenfunktionen sind Name und Uniquename. Diese Funktionen geben jeweils den Namen und den eindeutigen Namen eines Objekts zurück. Meistens werden sie beim Debuggen von Berechnungen verwendet, um herauszufinden, welches Element eine Funktion zurückgibt.

Beispiele

Die folgenden Beispielabfragen zeigen, wie diese Funktionen verwendet werden:

WITH  
//Returns the name of the current Product on rows  
MEMBER [Measures].[ProductName] AS [Product].[Product].CurrentMember.Name  
//Returns the uniquename of the current Product on rows  
MEMBER [Measures].[ProductUniqueName] AS [Product].[Product].CurrentMember.Uniquename  
//Returns the name of the Product dimension  
MEMBER [Measures].[ProductDimensionName] AS [Product].Name  
SELECT  {[Measures].[ProductName],[Measures].[ProductUniqueName],[Measures].[ProductDimensionName]}  
ON COLUMNS,  
[Product].[Product].MEMBERS  ON ROWS  
FROM [Adventure Works]  

Die Generate-Funktion kann verwendet werden, um auf jedem Element einer Menge eine Zeichenkettenfunktion auszuführen und die Ergebnisse zu verketten. Dies kann auch beim Debuggen von Berechnungen nützlich sein, da es ermöglicht, den Inhalt einer Menge zu visualisieren. Das folgende Beispiel zeigt, wie man es auf diese Weise verwendet:

WITH  
//Returns the names of the current Product and its ancestors up to the All Member  
MEMBER [Measures].[AncestorNames] AS  
GENERATE(  
ASCENDANTS([Product].[Product Categories].CurrentMember)  
, [Product].[Product Categories].CurrentMember.Name, ", ")  
SELECT  
{[Measures].[AncestorNames]}  
ON COLUMNS,  
[Product].[Product Categories].MEMBERS  ON ROWS  
FROM [Adventure Works]  

Eine weitere Gruppe weit verbreiteter String-Funktionen sind solche, die es ermöglichen, einen String mit dem eindeutigen Namen eines Objekts oder einen Ausdruck, der auf das Objekt aufgelöst wird, in das Objekt selbst zu übertragen. Die folgende Beispielanfrage zeigt, wie die Funktionen StrToMember und StrToSet dies tun:

SELECT  
{StrToMember("[Measures].[Inter" + "net Sales Amount]")}  
ON COLUMNS,  
StrToSet("{  
[Product].[Product Categories].[Category].&[3],  
[Product].[Product Categories].[Product].&[477],  
[Product].[Product Categories].[Product].&[788],  
[Product].[Product Categories].[Product].&[708],  
[Product].[Product Categories].[Product].&[711]  
}")  
ON ROWS  
FROM [Adventure Works]  

Note

Die Funktionen StrToMember und StrToSet sollten mit Vorsicht verwendet werden. Sie können zu schlechter Abfrageleistung führen, wenn sie in Berechnungsdefinitionen verwendet werden.