GENERATEALL

Se aplica a:Columna calculadaTabla calculadaMediciónCálculo visual

Devuelve una tabla con el producto cartesiano entre cada fila de table1 y la tabla que se obtiene al evaluar table2 en el contexto de la fila actual de table1.

Sintaxis

GENERATEALL(<table1>, <table2>)  

Parámetros

Término Definición
table1 Cualquier expresión DAX que devuelve una tabla.
table2 Cualquier expresión DAX que devuelve una tabla.

Valor devuelto

Una tabla con el producto cartesiano entre cada fila de table1 y la tabla que se obtiene al evaluar table2 en el contexto de la fila actual de table1.

Notas

  • Si la evaluación de table2 de la fila actual de table1 devuelve una tabla vacía, la fila actual de table1 se incluirá en los resultados y las columnas correspondientes a table2 tendrán valores NULL para esa fila. Esto es diferente que GENERATE(), donde la fila actual de table1no se incluirá en los resultados.

  • Todos los nombres de columna de table1 y table2 deben ser diferentes; si no, se devuelve un error.

  • Esta función no se admite para su uso en el modo DirectQuery cuando se utiliza en columnas calculadas o en reglas de seguridad de nivel de fila (RLS).

Ejemplo

En el ejemplo siguiente, el usuario quiere una tabla de resumen de las ventas por región y categoría de producto para el canal distribuidores, como en la tabla siguiente:

SalesTerritory[SalesTerritoryGroup] ProductCategory[ProductCategoryName] [ResellerSales]
Europa Accesorios 142 227,27 USD
Europa Bicicletas 9 970 200,44 USD
Europa Ropa 365 847,63 USD
Europa Componentes 2 214 440,19 USD
NA Accesorios
NA Bicicletas
NA Ropa
NA Componentes
Norteamérica Accesorios 379 305,15 USD
Norteamérica Bicicletas 52 403 796,85 USD
Norteamérica Ropa 1 281 193,26 USD
Norteamérica Componentes 8 882 848,05 USD
Pacífico Accesorios 12 769,57 USD
Pacífico Bicicletas 710 677,75 USD
Pacífico Ropa 22 902,38 USD
Pacífico Componentes 108 549,71 USD

La fórmula siguiente genera la tabla anterior:

GENERATEALL(  
SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])  
,SUMMARIZE(ProductCategory
, [ProductCategoryName]  
, "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])  
)  
)  
  1. El primer elemento 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]
    Norteamérica
    Europa
    Pacífico
    NA
  2. El segundo elemento SUMMARIZE genera una tabla de grupos de categoría de producto con las ventas de los distribuidores de cada grupo, tal como se muestra a continuación:

    ProductCategory[ProductCategoryName] [ResellerSales]
    Bicicletas 63 084 675,04 USD
    Componentes 11 205 837,96 USD
    Clothing 1 669 943,27 USD
    Accessories 534 301,99 USD
  3. Sin embargo, cuando se toma la tabla anterior y se evalúa la tabla en el contexto de cada fila de la tabla de grupos de territorios, se obtienen resultados distintos para cada territorio.