Použití řetězcových funkcí

Stringové funkce můžete použít téměř na každý objekt v Multidimensional Expressions (MDX). Ve uložených procedurách používáte stringové funkce především k převodu objektu na reprezentaci řetězce. Také používáte řetězcové funkce k vyhodnocení řetězcového výrazu nad objektem, abyste vrátili hodnotu.

Nejčastěji používané řetězcové funkce jsou Name a Uniquename. Tyto funkce vracejí název a jedinečný název objektu. Většinou se používají při ladění výpočtů, aby se zjistilo, který člen funkce vrací.

Examples

Následující příklady dotazů ukazují, jak tyto funkce používat:

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]  

Funkce Generate může být použita k vykonání řetězcové funkce na každém členu množiny a ke spojení výsledků. To může být užitečné i při ladění výpočtů, protože umožňuje vizualizovat obsah množiny. Následující příklad ukazuje, jak ji použít tímto způsobem:

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]  

Další skupinou běžně používaných řetězcových funkcí jsou ty, které umožňují přenést řetězec obsahující unikátní název objektu nebo výraz, který se vyřeší na objekt, přímo do objektu. Následující příklad dotazu ukazuje, jak to dělají funkce StrToMember a 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

Funkce StrToMember a StrToSet by měly být používány s opatrností. Mohou vést ke špatnému výkonu dotazů, pokud jsou použity v definicích výpočtů.