Función GENERATEALL (DAX)
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
GENERATEALL(<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 fila actual de table1 se incluirán en los resultados, y las columnas correspondientes a table2 tendrán valores NULL para esa fila. Este comportamiento es diferente al de GENERATE(), en que la fila actual de table1 no se incluirá en los resultados.
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 |
N/D |
Accessories |
|
N/D |
Bikes |
|
N/D |
Clothing |
|
N/D |
Components |
|
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:
GENERATEALL(
SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])
,SUMMARIZE(ProductCategory
, [ProductCategoryName]
, "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
)
)
La primera instrucción SUMMARIZE genera una tabla de grupos de territorios, donde cada fila es un grupo de territorios, como los que se muestran a continuación:
SalesTerritory[SalesTerritoryGroup]
North America
Europe
Pacific
N/D
La segunda instrucción SUMMARIZE 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.