Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Aplica un conjunto a cada miembro de otro conjunto y luego une los conjuntos resultantes por unión. Alternativamente, esta función devuelve una cadena concatenada creada evaluando una expresión de cadena sobre un conjunto.
Sintaxis
Set expression syntax
Generate( Set_Expression1 , Set_Expression2 [ , ALL ] )
String expression syntax
Generate( Set_Expression1 , String_Expression [ ,Delimiter ] )
Argumentos
Set_Expression1
Una expresión válida de Expresiones Multidimensionales (MDX) que devuelve un conjunto.
Set_Expression2
Una expresión válida de Expresiones Multidimensionales (MDX) que devuelve un conjunto.
String_Expression
Una expresión de cadena válida que suele ser el nombre del miembro actual (CurrentMember.Name) de cada tupla en el conjunto especificado.
Delimitador
Un delimitador válido expresado como una expresión de cadena.
Remarks
Si se especifica un segundo conjunto, la función Generar devuelve un conjunto generado aplicando las tuplas del segundo conjunto a cada tupla del primer conjunto, y luego uniendo los conjuntos resultantes por unión. Si ALL está especificado, la función conserva duplicados en el conjunto resultante.
Si se especifica una expresión de cadena, la función Generar devuelve una cadena generada evaluando la expresión de cadena especificada contra cada tupla del primer conjunto, y luego concatenando los resultados. Opcionalmente, la cadena puede delimitarse, separando cada resultado en la cadena concatenada resultante.
Examples
Establecer
En el siguiente ejemplo, la consulta devuelve un conjunto que contiene la cantidad de Mid Internet Sales cuatro veces, porque hay cuatro miembros en el conjunto [Fecha]. [Año Natural]. [Año Natural]. MIEMBROS:
SELECT
GENERATE( [Date].[Calendar Year].[Calendar Year].MEMBERS
, {[Measures].[Internet Sales Amount]}, ALL)
ON 0
FROM [Adventure Works]
Eliminar TODOS cambia la consulta para que el importe de ventas por Internet solo se devuelva una 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 complejo, como TopCount, sobre un conjunto de miembros. La siguiente consulta de ejemplo muestra los 10 productos principales para cada año natural 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]
Ten en cuenta que cada año se muestra un top 10 diferente, y que el uso de Generar es la única forma de obtener este resultado. Simplemente la unión cruzada de Años Naturales y el conjunto de los 10 productos principales mostrará los 10 productos principales de todos los tiempos, repitiéndose cada año, como se muestra en el siguiente ejemplo:
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
El siguiente ejemplo muestra el uso de Generar 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]
Note
Esta forma de la función Generate puede ser útil al depurar cálculos, ya que permite devolver una cadena que muestre los nombres de todos los miembros de un conjunto. Esto puede ser más fácil de leer que la representación estricta MDX de un conjunto que devuelve la función SetToStr (MDX ).