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])
)
)
  1. 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

  2. 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

  3. 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.