Usando funções de cadeia de caracteres

Você pode usar funções de string em quase todos os objetos em Expressões Multidimensionais (MDX). Em procedimentos armazenados, você usa funções de cadeia principalmente para converter o objeto em uma representação de cadeia. Você também usa funções de cadeia para avaliar uma expressão de cadeia sobre um objeto a fim de retornar um valor.

As funções de string mais amplamente utilizadas são Nome e Nome Único. Respectivamente, essas funções retornam o nome e o nome único de um objeto. Na maioria das vezes, são usados ao depurar cálculos para descobrir qual membro uma função está retornando.

Exemplos

Os seguintes exemplos de consultas mostram como usar essas funções:

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]  

A função Generate pode ser usada para executar uma função string em cada membro de um conjunto e concatenar os resultados. Isso também pode ser útil ao depurar cálculos, pois permite visualizar o conteúdo de um conjunto. O exemplo a seguir mostra como usá-lo dessa forma:

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]  

Outro grupo de funções de cadeia amplamente utilizadas são aquelas que permitem lançar uma cadeia contendo o nome único de um objeto ou uma expressão que resolve para o objeto dentro do próprio objeto. A consulta de exemplo a seguir demonstra como as funções StrToMember e StrToSet fazem isso:

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

As funções StrToMember e StrToSet devem ser usadas com cautela. Elas podem levar a um desempenho ruim de consultas se forem usadas dentro das definições de cálculo.