SYS_OP_ZONE_ID
구문
SYS_OP_ZONE_ID( [ [ schema. ] table. | t_alias. ] rowid [, scale ] )
목적
SYS_OP_ZONE_ID 함수는 인수로 rowid를 취하고 zone ID를 반환합니다. rowid는 테이블의 한 행을 식별합니다. zone ID는 그 행을 포함하는 연속된 디스크 블록 집합을 나타내며 이를 '존'이라고 합니다. 이 함수는 NUMBER 값을 반환합니다.
SYS_OP_ZONE_ID 함수는 CREATE MATERIALIZED ZONEMAP 문장을 사용하여 존 맵을 생성할 때 사용됩니다. 존 맵의 정의 서브쿼리의 SELECT 및 GROUP BY 절에서 SYS_OP_ZONE_ID를 지정해야 합니다.
rowid에는 존 맵의 사실 테이블의 ROWID 의사 컬럼을 지정하십시오.
schema와 table을 사용하여 사실 테이블의 스키마와 이름을 지정하거나 테이블의 별칭을 지정하는 t_alias를 사용하십시오. 이러한 매개변수의 지정 방법은 존 맵의 정의 서브쿼리의 FROM 절에 따라 달라집니다.
- FROM 절에서 사실 테이블에 대한 별칭을 지정한 경우, SYS_OP_ZONE_ID에서도 테이블 별칭 (t_alias)을 지정해야 합니다.
- FROM 절에서 사실 테이블에 대한 별칭을 지정하지 않은 경우, 테이블의 이름을 지정하려면 table을 사용하십시오. 테이블이 자신의 스키마가 아닌 다른 스키마에 있는 경우 schema 지정자를 사용할 수 있습니다. 스키마를 생략하면 데이터베이스는 사실 테이블이 자신의 스키마에 있는 것으로 간주합니다. FROM 절에서 사실 테이블 (단일 테이블, 즉 사실 테이블)만 지정하는 경우 schema나 table을 지정할 필요가 없습니다.
선택적인 scale 매개변수는 존 맵의 스케일을 나타냅니다. 이 매개변수를 지정할 필요는 없습니다. 왜냐하면 기본적으로 SYS_OP_ZONE_ID는 생성 중인 존 맵의 스케일을 사용합니다. 그러나 scale을 지정하는 경우 생성 중인 존 맵의 스케일과 일치해야 합니다. 존 맵의 스케일을 지정하는 방법에 대한 자세한 내용은 CREATE MATERIALIZED ZONEMAP의 SCALE 절을 참조하십시오.
참고:
더 많은 정보를 원하시면 CREATE MATERIALIZED ZONEMAP을 참조하십시오.
예제
다음 예제는 팩트 테이블 sales의 time_id 열을 추적하는 기본적인 존 맵을 생성할 때 SYS_OP_ZONE_ID 함수를 사용하는 방법을 보여줍니다. 존 맵의 스케일은 기본값으로 10입니다. 따라서 SYS_OP_ZONE_ID 함수는 스케일 값으로 10을 기본값으로 사용합니다.
CREATE MATERIALIZED ZONEMAP sales_zmap
AS
SELECT SYS_OP_ZONE_ID(rowid), MIN(time_id), MAX(time_id)
FROM sales
GROUP BY SYS_OP_ZONE_ID(rowid);
다음 예제는 이전 예제와 유사하지만, 생성되는 존 맵의 스케일이 8로 지정된 점이 다릅니다. 따라서 SYS_OP_ZONE_ID 함수는 스케일 값으로 8을 기본값으로 사용합니다.
CREATE MATERIALIZED ZONEMAP sales_zmap
SCALE 8
AS
SELECT SYS_OP_ZONE_ID(rowid), MIN(time_id), MAX(time_id)
FROM sales
GROUP BY SYS_OP_ZONE_ID(rowid);
다음 예제는 생성 중인 존 맵의 스케일이 8로 지정되었으며, 이는 SYS_OP_ZONE_ID 함수에서 지정된 12의 scale 인자와 일치하지 않으므로 오류가 발생합니다.
CREATE MATERIALIZED ZONEMAP sales_zmap
SCALE 8
AS
SELECT SYS_OP_ZONE_ID(rowid,12), MIN(time_id), MAX(time_id)
FROM sales
GROUP BY SYS_OP_ZONE_ID(rowid,12);
다음 예제는 조인 존 맵을 생성합니다. 팩트 테이블은 sales이고, 디멘션 테이블은 products와 customers입니다. FROM 절에서 팩트 테이블에 대한 테이블 별칭 s가 지정되었기 때문에 SYS_OP_ZONE_ID 함수에서도 테이블 별칭 s가 지정됩니다.
CREATE MATERIALIZED ZONEMAP sales_zmap
AS
SELECT SYS_OP_ZONE_ID(s.rowid),
MIN(prod_category), MAX(prod_category),
MIN(country_id), MAX(country_id)
FROM sales s, products p, customers c
WHERE s.prod_id = p.prod_id(+) AND
s.cust_id = c.cust_id(+)
GROUP BY SYS_OP_ZONE_ID(s.rowid);
출처: 오라클 레퍼런스
원문 링크: Oracle SYS_OP_ZONE_ID 함수 문서
'코딩 > 오라클 함수' 카테고리의 다른 글
[오라클 레퍼런스 함수] SYS_XMLAGG - XML 문서 또는 조각을 집계하여 단일 XML 문서 생성 (0) | 2023.08.25 |
---|---|
[오라클 레퍼런스 함수] SYS_TYPEID - 객체 유형(object type)의 typeid 반환 (0) | 2023.08.25 |
[오라클 레퍼런스 함수] SYS_GUID - GUID(글로벌 유니크 식별자) 생성 함수 (0) | 2023.08.24 |
[오라클 레퍼런스 함수] SYS_EXTRACT_UTC - UTC(협정 세계 시간) 추출 함수 (0) | 2023.08.24 |
[오라클 레퍼런스 함수] SYS_DBURIGEN - URL 생성 함수 (0) | 2023.08.24 |
댓글