使用字串函數
多維度運算式 (MDX) 中每個物件幾乎都可以使用字串函數。在預存程序中,字串函數主要用來將物件轉換為字串表示法。您也可以使用字串函數在物件上評估字串運算式,以傳回一個值。
最常用的字串函數是 Name 和 Uniquename。這些函數會分別傳回某個物件的名稱和唯一名稱。它們大多用於偵錯計算來找出函數所傳回的成員。
範例
下列範例查詢會示範如何使用這些函數:
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]
Generate 函數可在集合的每一個成員上用來執行字串函數及串連結果。這對於偵錯計算也很實用,因為它可讓您將集合的內容視覺化。下列範例示範這種方式的作法:
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]
另一組常用的字串函數就是那些可讓您將包含物件或運算式 (可解析成物件) 之唯一名稱的字串轉換成物件本身的函數。下列範例查詢示範 StrToMember 和 StrToSet 函數如何進行這項處理:
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]
[!附註]
使用 StrToMember 和 StrToSet 函數應該要很小心。因為如果在計算定義內使用它們,可能會產生極差的查詢效能。