Utilização de Funções de Cadeias de Caracteres

Pode usar funções string em quase todos os objetos em Expressões Multidimensionais (MDX). Nos procedimentos armazenados, usas funções de cadeia principalmente para converter o objeto numa representação de cadeia. Também usas funções de cadeia para avaliar uma expressão de cadeia sobre um objeto para devolver um valor.

As funções de cadeia mais amplamente utilizadas são Nome e Nome Único. Respetivamente, estas funções devolvem o nome e o nome único de um objeto. Na maioria das vezes, são usados ao depurar cálculos para descobrir que membro uma função está a devolver.

Examples

As seguintes consultas de exemplo mostram como usar estas 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. Isto também pode ser útil ao depurar cálculos, pois permite visualizar o conteúdo de um conjunto. O exemplo seguinte mostra como usá-lo desta 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 que contém o nome único de um objeto ou uma expressão que resolve para o objeto dentro do próprio objeto. A consulta de exemplo seguinte demonstra como as funções StrToMember e StrToSet fazem isto:

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. Podem levar a um desempenho fraco das consultas se forem usadas dentro das definições de cálculo.