Compartir a través de


GENERATEALL

Se aplica a:columna Calculadatabla calculadaMedidacálculo visual

Devuelve una tabla con el producto cartesiano entre cada fila de tabla1 y la tabla que resulta de evaluar tabla2 en el contexto de la fila actual de tabla1.

Sintaxis

GENERATEALL(<table1>, <table2>)

Parámetros

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

Valor devuelto

Tabla con el producto cartesiano entre cada fila de tabla1 y la tabla que resulta de evaluar tabla2 en el contexto de la fila actual de tabla1

Observaciones

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

  • Todos los nombres de columna de tabla1 y tabla2 deben ser diferentes o se devuelve un error.

  • Esta función no se admite para su uso en el modo DirectQuery cuando se usa en columnas calculadas o 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 Resellers, como en la tabla siguiente:

SalesTerritory[SalesTerritoryGroup] ProductCategory[ProductCategoryName] [Ventas de revendedor]
Europa Accesorios $ 142,227.27
Europa Bicicletas $ 9,970,200,44
Europa Ropa $ 365,847.63
Europa Componentes $ 2,214,440.19
NA Accesorios
NA Bicicletas
NA Ropa
NA Componentes
América del Norte Accesorios $ 379,305.15
América del Norte Bicicletas $ 52,403,796.85
América del Norte Ropa $ 1,281,193.26
América del Norte Componentes $ 8,882,848.05
Pacífico Accesorios $ 12,769,57
Pacífico Bicicletas $ 710,677,75
Pacífico Ropa $ 22.902.38
Pacífico Componentes $ 108,549.71

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 SUMMARIZE genera una tabla de grupos de territorio, donde cada fila es un grupo de territorio, como los enumerados a continuación:

    SalesTerritory[SalesTerritoryGroup]
    América del Norte
    Europa
    Pacífico
    NA
  2. El segundo SUMMARIZE genera una tabla de grupos categoría de producto con las ventas de revendedores para cada grupo, como se muestra a continuación:

    ProductCategory[ProductCategoryName] [Ventas de revendedor]
    Bicicletas $ 63,084,675.04
    Componentes $ 11,205,837,96
    Ropa $ 1,669,943,27
    Accesorios $ 534,301,99
  3. Sin embargo, cuando se toma la tabla anterior y se evalúa la tabla bajo el contexto de cada fila de la tabla de grupos de territorio, se obtienen resultados diferentes para cada territorio.