GENERATEALL 函数 (DAX)

返回一个表以及一个笛卡尔积,后者是在 table1 中的每行与通过在 table1 中的当前行的上下文中计算 table2 所得到的表之间计算获得的。

语法

GENERATEALL(<table1>, <table2>)

参数

  • table1
    任何返回表的 DAX 表达式。

  • table2
    任何返回表的 DAX 表达式。

返回值

一个表以及一个笛卡尔积,后者是在 table1 中的每行与通过在 table1 中的当前行的上下文中计算 table2 所得到的表之间计算获得的

注释

  • 如果对 table1 中的当前行计算 table2 时返回空表,则 table1 中的当前行将包含在结果中,与 table2 对应的列将对于该行具有 Null 值。 这一点与 GENERATE() 不同,在后者中,table1 中的当前行将“不”包含在结果中。

  • table1 和 table2 中的所有列名必须不同,否则返回错误。

示例

在下面的示例中,用户需要根据经销商渠道按区域和产品类别划分的销售额的汇总表,如下所示:

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

NA

Accessories

NA

Bikes

NA

Clothing

NA

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

以下代码生成上述的表:

GENERATEALL(
SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])
,SUMMARIZE(ProductCategory 
, [ProductCategoryName]
, "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
)
)
  1. 第一条 SUMMARIZE 生成有关区域组的表,其中每行是一个区域组,如下面所列:

    SalesTerritory[SalesTerritoryGroup]

    North America

    Europe

    Pacific

    不适用

  2. 第二个 SUMMARIZE 为每个组的分销商销售额生成产品类别组表,如下所示:

    ProductCategory[ProductCategoryName]

    [Reseller Sales]

    Bikes

    $ 63,084,675.04

    Components

    $ 11,205,837.96

    Clothing

    $ 1,669,943.27

    Accessories

    $ 534,301.99

  3. 但是,当您采用上述表并在区域组表中每一行的上下文中对此表进行计算时,您将对于每个区域获得不同的结果。