GENERATE 함수(DAX)
table1에 있는 각 행과 table1에서 현재 행의 컨텍스트로 table2를 계산하여 가져온 테이블 사이의 카티션 곱이 포함된 테이블을 반환합니다.
구문
GENERATE(<table1>, <table2>)
매개 변수
table1
테이블을 반환하는 DAX 식입니다.table2
테이블을 반환하는 DAX 식입니다.
반환 값
table1에 있는 각 행과 table1에서 현재 행의 컨텍스트로 table2를 계산하여 가져온 테이블 사이의 카티션 곱이 포함된 테이블입니다.
주의
table1의 현재 행에 대한 table2 계산으로 빈 테이블이 반환되는 경우 결과 테이블에는 table1의 현재 행이 포함되지 않습니다. 이 함수는 table1의 현재 행이 결과에 포함되고 table2에 해당하는 열이 해당 행에 대해 Null 값을 갖는 GENERATEALL()과는 다릅니다.
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 |
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 |
위 테이블은 다음과 같은 코드로 생성됩니다.
GENERATE(
SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])
,SUMMARIZE(ProductCategory
, [ProductCategoryName]
, "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
)
)
첫 번째 SUMMARIZE 문인 SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])은 아래 표시된 것처럼 각 행이 지역 그룹을 나타내는 지역 그룹 테이블을 생성합니다.
SalesTerritory[SalesTerritoryGroup]
North America
Europe
Pacific
NA
두 번째 SUMMARIZE 문인 SUMMARIZE(ProductCategory, [ProductCategoryName], "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD]))는 아래 표시된 것처럼 각 그룹에 대한 대리점 판매가 포함된 Product Category 그룹의 테이블을 생성합니다.
ProductCategory[ProductCategoryName]
[Reseller Sales]
Bikes
$ 63,084,675.04
Components
$ 11,205,837.96
Clothing
$ 1,669,943.27
Accessories
$ 534,301.99
하지만 위 테이블을 사용하여 지역 그룹 테이블에서 가져온 각 행의 컨텍스트로 계산하면 각 지역에 대해 다른 결과를 얻게 됩니다.