Compartir a través de


Usar funciones de cadena

Las funciones de cadena se pueden usar en casi todos los objetos de las expresiones multidimensionales (MDX). En los procedimientos almacenados, las funciones de cadena se usan principalmente para convertir el objeto en una representación de cadena. También sirven para evaluar una expresión de cadena con relación a un objeto para devolver un valor.

Las funciones de cadena que más se utilizan son Name y Uniquename. Estas funciones devuelven el nombre y el nombre único de un objeto, respectivamente. Se utilizan principalmente al depurar cálculos para detectar qué miembro devuelve una función.

Ejemplos

Las consultas de ejemplo siguientes muestran el modo de usar estas funciones:

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]

La función Generate puede utilizarse para ejecutar una función de cadena en cada uno de los miembros de un conjunto y concatenar los resultados. Esto también puede resultar útil a la hora de depurar cálculos, puesto que permite visualizar el contenido de un conjunto. En el ejemplo siguiente se muestra cómo utilizar la función de esta 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]

Otro grupo de funciones de cadena que se utilizan mucho son las funciones que permiten convertir una cadena que contiene el nombre único de un objeto o una expresión que se resuelve en el objeto en el objeto propiamente dicho. La consulta de ejemplo siguiente muestra el modo en que las funciones StrToSet y StrToMember hacen esto:

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]

[!NOTA]

Las funciones StrToSet y StrToMember deben usarse con precaución. Pueden dar lugar a un bajo rendimiento de las consultas si se utilizan dentro de definiciones de cálculo.