본문 바로가기

[오라클 레퍼런스 함수] CUBE_TABLE - 큐브나 차원 데이터를 이차원 형식으로 반환

by ㅇㅍㅍ 2023. 8. 3.
[오라클 레퍼런스 함수] CUBE_TABLE - 큐브나 차원 데이터를 이차원 형식으로 반환
728x90

CUBE_TABLE

 

구문

CUBE_TABLE
( ' { schema.cube [ {HIERARCHY | HRR} dimension hierarchy ]...
    | schema.dimension [ {HIERARCHY | HRR} [dimension] hierarchy ]
    }
  '
)

 

목적

CUBE_TABLE 함수는 큐브나 차원에서 데이터를 추출하여 관계형 테이블의 이차원 형식으로 반환합니다. 이는 SQL 기반 애플리케이션에서 사용할 수 있습니다.

이 함수는 하나의 VARCHAR2 인수를 사용합니다. 선택적인 hierarchy 절을 사용하면 차원 계층을 지정할 수 있습니다. 큐브는 여러 계층 절을 가질 수 있으며, 각 차원에 대해 하나씩 사용할 수 있습니다.

 

CUBE_TABLE 함수를 사용하여 다음과 같은 다양한 유형의 테이블을 생성할 수 있습니다:

 

  • 큐브 테이블은 큐브에 있는 각 차원마다 키 열과 측정값, 계산된 측정값에 대한 열이 포함됩니다. 큐브 테이블을 생성하려면 cube 계층 절을 사용하거나 사용하지 않을 수 있습니다. 여러 계층을 가진 차원의 경우, 이 절을 사용하여 지정된 계층의 차원 멤버와 레벨만 반환할 수 있습니다. 계층 절을 사용하지 않으면 모든 차원 멤버와 모든 레벨이 포함됩니다.
  • 차원 테이블은 키 열과 각 레벨 및 속성에 대한 열이 포함됩니다. 또한 멤버를 다음과 같은 코드 중 하나로 식별하는 MEMBER_TYPE 열도 포함됩니다:

    º L - 테이블, 뷰 또는 동의어에서 로드된 멤버
    º A - 로드된 멤버 및 차원의 모든 계층의 단일 루트, 즉 "전체" 집계 멤버
    º C - 계산된 멤버

    테이블에는 모든 차원 멤버와 모든 레벨이 포함됩니다. 차원 테이블을 생성하려면 dimension 계층 절을 사용하지 않고 차원을 지정하면 됩니다.
  • 계층 테이블은 차원 테이블의 모든 열과 부모 멤버를 위한 열 및 각 소스 레벨을 위한 열이 포함됩니다. 또한 차원 테이블과 같이 MEMBER_TYPE 열도 포함됩니다. 지정된 이름의 계층에 속하지 않은 차원 멤버와 레벨은 테이블에서 제외됩니다. 계층 테이블을 생성하려면 dimension 계층 절을 사용하여 차원을 지정하면 됩니다.

 

CUBE_TABLE은 테이블 함수로서 항상 다음과 같은 구문의 SELECT 문에서 사용됩니다.

SELECT ... FROM TABLE(CUBE_TABLE('arg'));

 

참고:

  • Oracle OLAP User’s Guide에서 차원 객체 및 CUBE_TABLE로 생성된 테이블에 대한 정보를 확인하세요.
  • Oracle Database Globalization Support Guide의 부록 C에서는 CUBE_TABLE로 생성된 테이블의 각 문자 데이터 유형 열에 할당된 정렬 규칙(collation derivation rules)에 대한 정보를 제공합니다.

 

예제

다음 예제는 OLAP 옵션과 GLOBAL 샘플 스키마가 설치된 Oracle 데이터베이스를 필요로 합니다. GLOBAL 샘플 스키마를 다운로드하고 설치하는 방법에 대한 정보는 Oracle Oracle OLAP User’s Guide를 참조하세요.

다음 SELECT 문은 GLOBAL 스키마의 CHANNEL에 대한 차원 테이블을 생성합니다.

SELECT dim_key, level_name, long_description, channel_total_id tot_id,
       channel_channel_id chan_id, channel_long_description chan_desc,
       total_long_description tot_desc
  FROM TABLE(CUBE_TABLE('global.channel'));

DIM_KEY      LEVEL_NAME LONG_DESCRIPTION TOT_ID CHAN_ID CHAN_DESC    TOT_DESC
-----------  ---------- ---------------- ------ ------- ------------ -------------
CHANNEL_CAT  CHANNEL    Catalog          TOTAL  CAT     Catalog      Total Channel
CHANNEL_DIR  CHANNEL    Direct Sales     TOTAL  DIR     Direct Sales Total Channel
CHANNEL_INT  CHANNEL    Internet         TOTAL  INT     Internet     Total Channel
TOTAL_TOTAL  TOTAL      Total Channel    TOTAL                       Total Channel

 

다음 문은 UNITS_CUBE의 큐브 테이블을 생성하며, 이 테이블은 MARKETCALENDAR 계층으로 제한됩니다.

SELECT sales, units, cost, time, customer, product, channel
  FROM TABLE(CUBE_TABLE('global.units_cube HIERARCHY customer market HIERARCHY time calendar'))
  WHERE rownum < 20;

     SALES      UNITS       COST TIME                       CUSTOMER       PRODUCT     CHANNEL
---------- ---------- ---------- -------------------------- -------------- ----------- -----------
24538587.9      61109 22840853.7 CALENDAR_QUARTER_CY1998.Q1 TOTAL_TOTAL    TOTAL_TOTAL TOTAL_TOTAL
24993273.3      61320   23147171 CALENDAR_QUARTER_CY1998.Q2 TOTAL_TOTAL    TOTAL_TOTAL TOTAL_TOTAL
25080541.4      65265 23242535.4 CALENDAR_QUARTER_CY1998.Q3 TOTAL_TOTAL    TOTAL_TOTAL TOTAL_TOTAL
  26258474      66122 24391020.6 CALENDAR_QUARTER_CY1998.Q4 TOTAL_TOTAL    TOTAL_TOTAL TOTAL_TOTAL
  32785170      77589 30607218.1 CALENDAR_QUARTER_CY1999.Q1 TOTAL_TOTAL    TOTAL_TOTAL TOTAL_TOTAL
. . .

 


출처: 오라클 레퍼런스

원문 링크: Oracle CUBE_TABLE 함수 문서

 

반응형

댓글