Partager via


Utilisation des fonctions de chaîne

Vous pouvez utiliser des fonctions de chaîne sur tous les objets ou presque de la syntaxe MDX (Multidimensional Expressions). Dans les procédures stockées, les fonctions de chaîne sont principalement utilisées pour convertir l'objet en représentation sous forme de chaîne. Les fonctions de chaîne permettent également d'évaluer une expression de chaîne sur un objet afin de retourner une valeur.

Les fonctions de chaîne les plus fréquemment utilisées sont Name et Uniquename. Ces fonctions retournent respectivement le nom et le nom unique d'un objet. Essentiellement, elles sont utilisées lors du débogage des calculs pour découvrir quel membre une fonction retourne.

Exemples

L'exemple des requêtes suivant montre comment utiliser ces fonctions :

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 fonction Generate peut être utilisée pour exécuter une fonction de chaîne sur chaque membre d'un jeu et concaténer les résultats. Elle est parfois aussi utile lors du débogage des calculs car elle vous permet de visualiser le contenu d'un jeu. L'exemple suivant montre comment l'utiliser comme suit :

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]

Un autre groupe de fonctions de chaîne largement utilisées est celles qui vous permettent de convertir une chaîne qui contient le nom unique d'un objet ou une expression qui est résolue en l'objet dans l'objet lui-même. L'exemple de requête suivant montre comment les fonctions StrToMember et StrToSet effectuent cette opération :

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]

[!REMARQUE]

Les fonctions StrToMember et StrToSet sont à utiliser avec prudence. Elles peuvent entraîner des performances médiocres de requête si elles sont utilisées dans des définitions de calcul.