文字列関数の使用
文字列関数は、多次元式 (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]
広く使われているもう 1 つのグループの文字列関数は、オブジェクトやそのオブジェクトに解決される式の一意の名前を含む文字列を、そのオブジェクト自体にキャストできるようにする関数です。 次のクエリでは、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 関数は、注意して使用する必要があります。これらの関数を計算の定義内で使用すると、クエリのパフォーマンスが低下する場合があります。