Generate (MDX)

Aplica un conjunto a cada miembro de otro conjunto y a continuación combina los conjuntos resultantes mediante unión. Alternativamente, esta función devuelve una cadena concatenada que se creó evaluando una expresión de cadena en un conjunto.

Sintaxis

  
Set expression syntax  
Generate( Set_Expression1 ,  Set_Expression2 [ , ALL ]  )  
  
String expression syntax  
Generate( Set_Expression1 ,  String_Expression [ ,Delimiter ]  )  

Argumentos

Set_Expression1
Expresión MDX (Expresiones multidimensionales) válida que devuelve un conjunto.

Set_Expression2
Expresión MDX (Expresiones multidimensionales) válida que devuelve un conjunto.

String_Expression
Expresión de cadena válida que suele ser el nombre del miembro actual (CurrentMember.Name) de cada tupla del conjunto especificado.

Delimitador
Delimitador válido expresado como expresión de cadena.

Comentarios

Si se especifica un segundo conjunto, la función Generate devuelve un conjunto generado aplicando las tuplas del segundo conjunto a cada tupla del primer conjunto y, a continuación, uniendo los conjuntos resultantes por unión. Si se especifica ALL , la función conserva duplicados en el conjunto resultante.

Si se especifica una expresión de cadena, la función Generate devuelve una cadena generada mediante la evaluación de la expresión de cadena especificada en cada tupla del primer conjunto y, a continuación, concatenando los resultados. De forma opcional, la cadena se puede delimitar al separar cada resultado de la cadena concatenada resultante.

Ejemplos

Set

En el ejemplo siguiente, la consulta devuelve un conjunto que contiene cuatro veces la medida Internet Sales Amount, porque hay cuatro miembros en el conjunto [Date].[Calendar Year].[Calendar Year].MEMBERS:

SELECT   
GENERATE( [Date].[Calendar Year].[Calendar Year].MEMBERS  
, {[Measures].[Internet Sales Amount]}, ALL)  
ON 0  
FROM [Adventure Works]  

Al quitar ALL, se modifica la consulta de modo que devuelva Internet Sales Amount una sola vez:

SELECT   
GENERATE( [Date].[Calendar Year].[Calendar Year].MEMBERS  
, {[Measures].[Internet Sales Amount]})  
ON 0  
FROM [Adventure Works]  

El uso práctico más común de Generate es evaluar una expresión de conjunto compleja, como TopCount, en un conjunto de miembros. La consulta de ejemplo siguiente muestra los 10 productos más vendidos de cada año natural (Calendar Year) en filas:

SELECT   
{[Measures].[Internet Sales Amount]}  
ON 0,  
GENERATE(   
[Date].[Calendar Year].[Calendar Year].MEMBERS  
, TOPCOUNT(  
[Date].[Calendar Year].CURRENTMEMBER  
*  
[Product].[Product].[Product].MEMBERS  
,10, [Measures].[Internet Sales Amount]))  
ON 1  
FROM [Adventure Works]  

Tenga en cuenta que se muestra un top 10 diferente para cada año y que el uso de Generate es la única manera de obtener este resultado. Basta con unir de forma cruzada los años naturales para que el conjunto de los 10 productos más vendidos muestre los 10 productos más vendidos de todo el tiempo, repetidos para cada año, tal y como se muestra en el ejemplo siguiente:

SELECT   
{[Measures].[Internet Sales Amount]}  
ON 0,  
[Date].[Calendar Year].[Calendar Year].MEMBERS  
*   
TOPCOUNT(  
[Product].[Product].[Product].MEMBERS  
,10, [Measures].[Internet Sales Amount])  
ON 1  
FROM [Adventure Works]  

String

En el ejemplo siguiente se muestra el uso de Generate para devolver una cadena:

WITH   
MEMBER MEASURES.GENERATESTRINGDEMO AS  
GENERATE(   
[Date].[Calendar Year].[Calendar Year].MEMBERS,  
[Date].[Calendar Year].CURRENTMEMBER.NAME)  
MEMBER MEASURES.GENERATEDELIMITEDSTRINGDEMO AS  
GENERATE(   
[Date].[Calendar Year].[Calendar Year].MEMBERS,  
[Date].[Calendar Year].CURRENTMEMBER.NAME, " AND ")  
SELECT   
{MEASURES.GENERATESTRINGDEMO, MEASURES.GENERATEDELIMITEDSTRINGDEMO}  
ON 0  
FROM [Adventure Works]  

Nota

Esta forma de la función Generate puede ser útil al depurar cálculos, ya que permite devolver una cadena que muestra los nombres de todos los miembros de un conjunto. Esto puede ser más fácil de leer que la representación MDX estricta de un conjunto que devuelve la función SetToStr (MDX ).

Consulte también

Referencia de funciones MDX (MDX)