AUTOMATIC_CLUSTERING_HISTORY
AUTOMATIC_CLUSTERING_HISTORY
지정된 날짜 범위 안에서 주어진 테이블들의 Automatic Clustering 이력을 조회하는 Information Schema 테이블 함수예요. 반환되는 정보에는 테이블이 리클러스터링될 때마다 소비된 크레딧, 갱신된 바이트 수, 갱신된 행 수가 포함돼요.
출처: 공식 문서
본문
지정된 날짜 범위 안에서 주어진 테이블들에 대한 Automatic Clustering 이력을 조회하는 데 사용하는 테이블 함수입니다. 함수가 반환하는 정보에는 테이블이 리클러스터링될 때마다 소비된 크레딧(credits), 갱신된 바이트(updated bytes), 갱신된 행 수(updated rows)가 포함됩니다.
참고 (Note): 이 함수는 Optima Clustering 데이터를 포함하지 않으며, 더 완전한 데이터 집합을 제공하고 더 긴 날짜 범위를 지원하는 ACCOUNT_USAGE.AUTOMATIC_CLUSTERING_HISTORY 뷰를 위해 더 이상 사용되지 않습니다(deprecated).
구문 (Syntax)
AUTOMATIC_CLUSTERING_HISTORY(
[ DATE_RANGE_START => <constant_expr> ]
[ , DATE_RANGE_END => <constant_expr> ]
[ , TABLE_NAME => '<string>' ] )
인자 (Arguments)
모든 인자는 선택 사항입니다.
Automatic Clustering 이력을 표시할 날짜/시간 범위입니다. 예를 들어 시작 날짜가 2019-04-03이고 종료 날짜가 2019-04-05라고 지정하면 4월 3일, 4월 4일, 4월 5일의 데이터를 얻습니다. (끝점이 포함됩니다.)
-
시작 날짜와 종료 날짜를 모두 지정하지 않으면 기본값은 지난 12시간입니다.
-
종료 날짜를 지정하지 않고 시작 날짜만 지정하면 자정의 CURRENT_DATE가 범위의 끝으로 사용됩니다.
-
시작 날짜를 지정하지 않고 종료 날짜만 지정하면 범위는 DATE_RANGE_END의 시작 시점보다 12시간 전에 시작됩니다.
테이블 이름입니다. 지정하면 지정된 테이블의 이력만 보여줍니다. 테이블 이름에는 스키마 이름과 데이터베이스 이름이 포함될 수 있습니다.
테이블 이름을 지정하지 않으면 결과에는 지정된 시간 범위 안에서 Automatic Clustering Service가 유지 관리하는 각 테이블의 이력이 포함됩니다.
사용 참고 사항 (Usage notes)
ACCOUNTADMIN 역할 또는 MONITOR USAGE 전역 권한이 명시적으로 부여된 역할에 대해서만 결과를 반환합니다.
참고 (Note): MONITOR USAGE 권한이 있는 역할은 객체별 크레딧 사용량은 볼 수 있지만 객체 이름은 볼 수 없습니다. 이 함수가 객체 이름을 반환하려면 역할에 해당 객체에 대한 SELECT 권한도 부여되어 있어야 합니다. 역할이 객체 이름을 볼 수 있을 만큼 충분한 권한이 없으면 객체 이름은 "unknown_#" 같은 대체 이름으로 표시될 수 있으며, 여기서 "#"는 숫자 하나 이상을 나타냅니다.
Information Schema 테이블 함수를 호출할 때 세션에 INFORMATION_SCHEMA 스키마가 사용 중이어야 하거나 함수 이름이 완전히 한정되어(fully qualified) 있어야 합니다. 자세한 내용은 Snowflake Information Schema를 참고하세요.
이력은 1시간 단위로 표시됩니다.
행은 데이터 편향(skew), 클러스터링 키 분포, 마이크로파티션에 필요한 재정렬에 따라 여러 번 클러스터링될 수 있습니다. 초기 클러스터링이 좋지 않은 대형 테이블은 최적으로 클러스터링된 상태에 도달하기 위해 여러 번의 패스가 필요할 수 있습니다. 따라서 테이블의 NUM_ROWS_RECLUSTERED 값은 테이블의 총 행 수만큼 높거나 그보다 더 높을 수 있습니다.
출력 (Output)
이 함수는 다음 열들을 반환합니다:
| Column Name | Data Type | Description |
|---|---|---|
| START_TIME | TIMESTAMP_LTZ | 지정된 시간 범위의 시작. |
| END_TIME | TIMESTAMP_LTZ | 지정된 시간 범위의 끝. |
| TABLE_NAME | TEXT | 테이블의 이름. 함수에 테이블 이름이 지정되지 않으면 NULL을 표시하며, 이 경우 각 행에는 시간 범위 안에서 사용 중인 모든 테이블의 합계가 포함됩니다. |
| CREDITS_USED | NUMBER | START_TIME과 END_TIME 사이의 창에서 automatic clustering에 청구된 크레딧 수. |
| NUM_BYTES_RECLUSTERED | NUMBER | START_TIME과 END_TIME 사이의 창에서 리클러스터링된 바이트 수. |
| NUM_ROWS_RECLUSTERED | NUMBER | START_TIME과 END_TIME 사이의 창에서 리클러스터링된 행 수. |
예제 (Examples)
계정의 한 시간 범위에 대한 automatic clustering 이력을 조회합니다:
select *
from table(information_schema.automatic_clustering_history(
date_range_start=>'2018-04-10 13:00:00.000 -0700',
date_range_end=>'2018-04-10 14:00:00.000 -0700'));
계정의 지난 12시간을 1시간 단위로 조회합니다:
select *
from table(information_schema.automatic_clustering_history(
date_range_start=>dateadd(H, -12, current_timestamp)));
계정의 지난 주에 대한 automatic clustering 이력을 조회합니다:
select *
from table(information_schema.automatic_clustering_history(
date_range_start=>dateadd(D, -7, current_date),
date_range_end=>current_date));
계정의 지정된 테이블에 대한 지난 주의 automatic clustering 이력을 조회합니다:
select *
from table(information_schema.automatic_clustering_history(
date_range_start=>dateadd(D, -7, current_date),
date_range_end=>current_date,
table_name=>'mydb.myschema.mytable'));