Использование строковых функций

Вы можете использовать строковые функции почти на каждом объекте в многомерных выражениях (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 следует использовать с осторожностью. Они могут привести к низкой производительности запросов, если используются в определениях вычислений.