Korzystanie z funkcji ciągów

Możesz używać funkcji łańcuchowych niemal na każdym obiekcie w Multidimensional Expressions (MDX). W procedurach przechowywanych funkcje łańcuchowe używasz głównie do konwersji obiektu na reprezentację ciągu znaków. Używasz także funkcji ciągów do oceny wyrażenia ciągu nad obiektem, aby zwrócić wartość.

Najczęściej stosowanymi funkcjami ciągów to Name i Uniquename. Funkcje te zwracają odpowiednio nazwę i unikalną nazwę obiektu. Najczęściej są używane podczas debugowania obliczeń, aby wykryć, który element funkcja zwraca.

Examples

Poniższe przykładowe zapytania pokazują, jak używać tych funkcji:

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]  

Funkcja Generate może być użyta do wykonania funkcji ciągu na każdym członku zbioru i łączenia wyników. To również może być przydatne podczas debugowania obliczeń, ponieważ pozwala wizualizować zawartość zbioru. Poniższy przykład pokazuje, jak go używać w ten sposób:

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]  

Inną grupą szeroko stosowanych funkcji łańcuchowych są te, które pozwalają rzucić ciąg zawierający unikalną nazwę obiektu lub wyrażenie, które rozwiązuje się do obiektu, bezpośrednio do obiektu. Poniższe przykładowe zapytanie pokazuje, jak funkcje StrToMember i StrToSet to robią:

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

Funkcje StrToMember i StrToSet należy stosować ostrożnie. Mogą prowadzić do słabej wydajności zapytań, jeśli są stosowane w definicjach obliczeniowych.