집계 함수 사용

이 항목에서는 측정값에 집계 함수(Sum, Min, Max, CountDistinct Count)를 사용하는 예를 제공합니다. 쿼리 예는 함수 변경 시의 영향을 확인할 수 있도록 다음 예와 동일한 큐브 셀을 기반으로 합니다.

이러한 예에서 사용하는 큐브에는 Sales 팩트 테이블의 Sales_Amount 열을 기반으로 하는 단일 측정값 Sales가 있습니다. 큐브에는 다음 3가지 차원이 있습니다.

  • Customers 테이블을 기반으로 하고 위에서 아래로 다음 수준이 포함된 고객

    • (All)

    • Customer_Name이 멤버 이름 열이고 Customer_ID가 멤버 키 열인 고객

  • Retail_Stores 테이블을 기반으로 하고 위에서 아래로 다음 수준이 포함된 소매점

    • (All)

    • Retail_Store_Name이 멤버 열 이름이고 Retail_Store_ID가 멤버 키 열인 소매점

  • Products 테이블을 기반으로 하고 위에서 아래로 다음 수준이 포함된 제품

    • (All)

    • Product_Category가 멤버 열 이름인 동시에 멤버 키 열인 제품 범주

    • Product_Name이 멤버 열 이름이고 Product_ID가 멤버 키 열인 제품

차원 및 수준에 대한 자세한 내용은 차원 및 수준을 참조하십시오.

큐브의 스키마는 다음과 같습니다.

큐브의 팩트 테이블 Sales는 다음과 같습니다.

Transaction_ID

Customer_ID

Product_ID

Retail_Store_ID

Sales_

Amount

1

1

1

1

300

2

1

1

1

250

3

1

1

1

250

4

1

2

1

100

5

1

4

1

700

6

2

1

2

290

7

2

2

2

90

8

2

3

3

510

9

3

1

4

350

10

3

2

3

110

11

4

3

4

550

12

4

4

4

750

큐브의 차원 테이블 중 하나인 Customers는 다음과 같습니다.

Customer_ID

Customer_Name

Customer_Address_

Line_1

Customer_Address_

Line_2

1

A

1 A Street

Aville, AA 55555

2

B

2 B Street

Bville, BB 55555

3

C

3 C Street

Cville, CC 55555

4

D

4 D Street

Dville, DD 55555

큐브의 다른 차원 테이블인 Retail_Stores는 다음과 같습니다.

Retail_

Store_ID

Retail_Store_

이름

Retail_Store_

Address_Line_1

Retail_Store_

Address_Line_2

1

A

1 A Avenue

Atown, AA 55555

2

B

2 B Avenue

Btown, BB 55555

3

C

3 C Avenue

Ctown, CC 55555

4

D

4 D Avenue

Dtown, DD 55555

큐브의 마지막 차원 테이블인 Products는 다음과 같습니다.

Product_ID

Product_Name

Product_Description

Product_Category

1

A

aaaa aaaa aaaa

AB

2

B

bbbb bbbb bbbb

AB

3

C

cccc cccc cccc

CD

4

D

dddd dddd dddd

CD

SUM

측정값의 집계 함수 속성 값이 Sum이면 큐브 셀의 측정값은 셀을 정의하는 멤버와 해당 멤버의 하위 항목 조합에 대한 행에서만 측정값의 원본 열 값을 더하여 계산합니다.

다음 예에서는 누적된 Sales를 나타내는 값을 반환합니다.

1. 하나의 원자성 큐브 셀 쿼리

고객 A, 소매점 A 및 제품 A에 대한 Sales 측정값 쿼리는 800을 반환합니다.

2. 하나의 비원자성 큐브 셀 쿼리

고객 A, 소매점 A 및 제품 범주 AB에 대한 Sales 측정값 쿼리는 900을 반환합니다.

3. 여러 큐브 셀 쿼리

Sales 측정값 쿼리는 각 소매점을 X축에 두고 제품 범주 아래의 제품을 Y축에 중첩한 다음 All Customers를 기준으로 조각화합니다. 다음 데이터 집합이 반환됩니다.

모든 소매점

A

B

C

D

모든 제품

4250

1600

380

620

1650

AB

1740

900

380

110

350

A

1440

800

290

350

B

300

100

90

110

CD

2510

700

510

1300

C

1060

510

550

D

1450

700

750

Min

측정값의 집계 함수 속성 값이 Min이면 큐브 셀의 측정값은 셀을 정의하는 멤버와 해당 멤버의 하위 항목 조합에 대한 행에서만 측정값의 원본 열에 있는 가장 작은 값을 사용하여 계산합니다.

다음 예에서는 최저 Sales 가격을 나타내는 값을 반환합니다.

1. 하나의 원자성 큐브 셀 쿼리

고객 A, 소매점 A 및 제품 A에 대한 Sales 측정값 쿼리는 250을 반환합니다.

2. 하나의 비원자성 큐브 셀 쿼리

고객 A, 소매점 A 및 제품 범주 AB에 대한 Sales 측정값 쿼리는 100을 반환합니다.

3. 여러 큐브 셀 쿼리

Sales 측정값 쿼리는 각 소매점을 X축에 두고 제품 범주 아래의 제품을 Y축에 중첩한 다음 All Customers를 기준으로 조각화합니다. 다음 데이터 집합이 반환됩니다.

모든 소매점

A

B

C

D

모든 제품

90

100

90

110

350

AB

90

100

90

110

350

A

250

250

290

350

B

90

100

90

110

CD

510

700

510

550

C

510

510

550

D

700

700

750

Max

측정값의 집계 함수 속성 값이 Max이면 큐브 셀의 측정값은 셀을 정의하는 멤버와 해당 멤버의 하위 항목 조합에 대한 행에서만 측정값의 원본 열에 있는 가장 큰 값을 사용하여 계산합니다.

다음 예에서는 최고 Sales 가격을 나타내는 값을 반환합니다.

1. 하나의 원자성 큐브 셀 쿼리

고객 A, 소매점 A 및 제품 A에 대한 Sales 측정값 쿼리는 300을 반환합니다.

2. 하나의 비원자성 큐브 셀 쿼리

고객 A, 소매점 A 및 제품 범주 AB에 대한 Sales 측정값 쿼리는 300을 반환합니다.

3. 여러 큐브 셀 쿼리

Sales 측정값 쿼리는 각 소매점을 X축에 두고 제품 범주 아래의 제품을 Y축에 중첩한 다음 All Customers를 기준으로 조각화합니다. 다음 데이터 집합이 반환됩니다.

모든 소매점

A

B

C

D

모든 제품

750

700

290

510

750

AB

350

300

290

110

350

A

350

300

290

350

B

110

100

90

110

CD

750

700

510

750

C

550

510

550

D

750

700

750

Count

측정값의 집계 함수 속성 값이 Count이면 큐브 셀의 측정값은 셀을 정의하는 멤버와 해당 멤버의 하위 항목 조합에 대한 행에서만 측정값 원본 열의 값 개수를 더하여 계산합니다.

다음 예에서는 Sales 트랜잭션 수를 나타내는 값을 반환합니다.

1. 하나의 원자성 큐브 셀 쿼리

고객 A, 소매점 A 및 제품 A에 대한 Sales 측정값 쿼리는 3을 반환합니다.

2. 하나의 비원자성 큐브 셀 쿼리

고객 A, 소매점 A 및 제품 범주 AB에 대한 Sales 측정값 쿼리는 4를 반환합니다.

3. 여러 큐브 셀 쿼리

Sales 측정값 쿼리는 각 소매점을 X축에 두고 제품 범주 아래의 제품을 Y축에 중첩한 다음 All Customers를 기준으로 조각화합니다. 다음 데이터 집합이 반환됩니다.

모든 소매점

A

B

C

D

모든 제품

12

5

2

2

3

AB

8

4

2

1

1

A

5

3

1

1

B

3

1

1

1

CD

4

1

1

2

C

2

1

1

D

2

1

1

고유 카운트

측정값의 집계 함수 속성 값이 Distinct Count이면 큐브 셀의 측정값은 셀을 정의하는 멤버와 해당 멤버의 하위 항목 조합에 대한 행에서만 측정값 원본 열의 고유한 값 개수를 더하여 계산합니다.

집계 함수 속성 값이 Distinct Count인 측정값을 고유 카운트 측정값이라고 합니다. 고유 카운트 측정값은 팩트 테이블에서 차원의 최하위 수준 멤버의 발생 수를 계산하는 데 사용할 수 있습니다. 고유 카운트이므로 한 멤버가 여러 번 발생할 경우 한 번만 계산됩니다.

고유 카운트 측정값은 일반적으로 각 차원의 멤버에 대해 다른 차원의 최하위 수준 멤버가 팩트 테이블의 행을 공유하는 방법을 지정하는 데 사용됩니다. 예를 들어 Sales 큐브에서는 각 고객과 고객 그룹에 대해 몇 개의 고유 제품이 구매되었습니까? 즉, 고객 차원의 각 멤버에 대해 제품 차원에서 몇 개의 최하위 수준 고유 멤버가 팩트 테이블의 행을 공유합니까? 또는 예를 들어 인터넷 사이트 방문 큐브에서 각 사이트 방문자와 사이트 방문자 그룹에 대해 인터넷 사이트에서 몇 개의 고유 페이지가 방문되었습니까? 즉, 사이트 방문자 차원의 각 멤버에 대해 페이지 차원에서 몇 개의 최하위 수준 고유 멤버가 팩트 테이블의 행을 공유합니까? 이러한 각 예에서 두 번째 차원의 최하위 수준 멤버는 고유 카운트 측정값으로 계산됩니다.

이 종류의 분석을 두 가지 차원으로 제한할 필요는 없습니다. 실제로 계산된 멤버가 포함된 차원을 포함하여 큐브의 모든 차원 조합으로 고유 카운트 측정값을 구분하고 조각화할 수 있습니다.

멤버를 계산하는 고유 카운트 측정값은 팩트 테이블의 외래 키 열을 기반으로 합니다. 즉, 측정값의 Source Column 속성은 이 열을 식별합니다. 이 열은 고유 카운트 측정값으로 계산되는 멤버를 식별하는 차원 테이블 열을 조인합니다.

일반 큐브는 고유 카운트 측정값의 사용이 제한됩니다. 일반 큐브에서는 한 개의 고유 카운트 측정값만 허용되며 일반 큐브에 사용자 지정 롤업 연산자나 사용자 지정 롤업 수식이 포함된 차원이 없는 경우에만 허용됩니다. 그러나 가상 큐브는 이러한 제한 사항을 공유하지 않습니다. 가상 큐브는 여러 개의 고유 카운트 측정값을 이용할 수 있으며 고유 카운트 측정값과 함께 사용자 지정 롤업 연산자와 사용자 지정 롤업 수식을 사용할 수도 있습니다.

고유 카운트 측정값은 비가산적이므로 고유 카운트 측정값이 있으면 Microsoft® SQL Server™ 2000 Analysis Services의 큐브 미리 계산 기능이 크게 제한됩니다. 이런 이유로 각 고유 카운트를 다른 측정값이 없는 해당 큐브에 배치하는 것이 좋습니다. 그런 다음 모든 측정값을 효율적으로 관리하는 가상 큐브에서 고유 카운트 측정값이 포함된 이러한 큐브를 다른 큐브와 조인할 수 있습니다.

[!참고]

큐브에서 고유 카운트 측정값을 사용하는 경우 전체 큐브가 비가산적으로 처리됩니다. 비가산적 큐브는 동적으로 생성된 멤버를 지원하지 않으므로 VisualTotals와 같이 동적으로 멤버를 만드는 MDX 함수를 비가산적 큐브에 사용하면 오류가 반환됩니다. 이는 차원 보안의 보이는 값 합계 사용과 같이 동적으로 생성된 멤버가 필요한 다른 기능에도 영향을 줍니다.

다음 예에서는 고유한 Sales 가격이 있는 Sales 트랜잭션 수를 나타내는 값을 반환합니다.

1. 하나의 원자성 큐브 셀 쿼리

고객 A, 소매점 A 및 제품 A에 대한 Sales 측정값 쿼리는 2를 반환합니다.

2. 하나의 비원자성 큐브 셀 쿼리

고객 A, 소매점 A 및 제품 범주 AB에 대한 Sales 측정값 쿼리는 3을 반환합니다.

3. 여러 큐브 셀 쿼리

Sales 측정값 쿼리는 각 소매점을 X축에 두고 제품 범주 아래의 제품을 Y축에 중첩한 다음 All Customers를 기준으로 조각화합니다. 다음 데이터 집합이 반환됩니다.

모든 소매점

A

B

C

D

모든 제품

11

4

2

2

3

AB

7

3

2

1

1

A

4

2

1

1

B

3

1

1

1

CD

4

1

1

2

C

2

1

1

D

2

1

1