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.
Devuelve una tabla con el producto cartesiano entre cada fila de table1 y la tabla que resulta de la evaluación de table2 en el contexto de la fila actual de table1.
Sintaxis
GENERATE(<table1>, <table2>)
Parámetros
table1
Cualquier expresión de DAX que devuelve una tabla.table2
Cualquier expresión de DAX que devuelve una tabla.
Valor devuelto
Una tabla con el producto cartesiano entre cada fila de table1 y la tabla que resulta de la evaluación de table2 en el contexto de la fila actual de table1.
Comentarios
Si la evaluación de table2 de la fila actual de table1 devuelve una tabla vacía, la tabla de resultados no contendrá la fila actual de table1. Este comportamiento es diferente del de GENERATEALL(), en que la fila actual de table1 se incluirá en los resultados y las columnas correspondientes a table2 tendrán valores NULL para esa fila.
Todos los nombres de columna de table1 y table2 deben ser diferentes o se devuelve un error.
Ejemplo
En el siguiente ejemplo, el usuario desea obtener una tabla de resumen de las ventas por región y categoría de producto del canal de distribuidores, como la tabla siguiente:
SalesTerritory[SalesTerritoryGroup] |
ProductCategory[ProductCategoryName] |
[Reseller Sales] |
Europe |
Accessories |
$ 142,227.27 |
Europe |
Bikes |
$ 9,970,200.44 |
Europe |
Clothing |
$ 365,847.63 |
Europe |
Components |
$ 2,214,440.19 |
North America |
Accessories |
$ 379,305.15 |
North America |
Bikes |
$ 52,403,796.85 |
North America |
Clothing |
$ 1,281,193.26 |
North America |
Components |
$ 8,882,848.05 |
Pacific |
Accessories |
$ 12,769.57 |
Pacific |
Bikes |
$ 710,677.75 |
Pacific |
Clothing |
$ 22,902.38 |
Pacific |
Components |
$ 108,549.71 |
El código siguiente genera la tabla anterior:
GENERATE(
SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])
,SUMMARIZE(ProductCategory
, [ProductCategoryName]
, "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
)
)
La primera instrucción SUMMARIZE, SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup]), genera una tabla de grupos de territorios, donde cada fila es un grupo de territorios, como se muestra a continuación:
SalesTerritory[SalesTerritoryGroup]
North America
Europe
Pacific
N/D
La segunda instrucción SUMMARIZE, SUMMARIZE(ProductCategory, [ProductCategoryName], "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])), genera una tabla de grupos de categorías de producto con las ventas de los distribuidores de cada grupo, como se muestra a continuación:
ProductCategory[ProductCategoryName]
[Reseller Sales]
Bikes
$ 63,084,675.04
Components
$ 11,205,837.96
Clothing
$ 1,669,943.27
Accessories
$ 534,301.99
Sin embargo, si la tabla anterior se evalúa en el contexto de cada fila de la tabla de grupos de territorios, se obtienen resultados diferentes para cada territorio.