文字列関数の使用
文字列関数は、多次元式 (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 つのグループは、オブジェクトの uniquename を含む文字列、またはオブジェクトに解決される式をオブジェクト自体にキャストできるグループです。 次のクエリ例では、 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]
Note
StrToMember 関数と StrToSet 関数は慎重に使用する必要があります。 計算定義内で使用すると、クエリのパフォーマンスが低下する可能性があります。
参照
生成 (MDX)
名前 (MDX)
UniqueName (MDX)
関数 (MDX 構文)
ストアド プロシージャの使用 (MDX)
StrToMember (MDX)
StrToSet (MDX)