PIPE_USAGE_HISTORY
PIPE_USAGE_HISTORY
지정된 날짜 범위 안에서 Snowpipe로 Snowflake 테이블에 로드된 데이터의 히스토리를 조회하는 Information Schema 테이블 함수예요. 계정 전체의 로드된 데이터와 과금된 크레딧을 반환해요.
출처: 공식 문서
본문
이 테이블 함수는 지정된 날짜 범위 안에서 Snowpipe를 사용해 Snowflake 테이블에 로드된 데이터의 히스토리를 조회하는 데 사용할 수 있습니다. 함수는 계정 전체에 대해 로드된 데이터의 히스토리와 과금된 크레딧을 반환합니다.
참고 이 함수는 지난 14일 동안의 파이프 활동을 반환합니다.
참고 이 함수는 일반적으로 더 완전한 데이터 셋을 제공하고 더 긴 날짜 범위를 지원하는 ACCOUNT_USAGE.PIPE_USAGE_HISTORY 뷰를 위해 폐기(deprecated)되었습니다.
구문 (Syntax)
PIPE_USAGE_HISTORY(
[ DATE_RANGE_START => <constant_expr> ]
[, DATE_RANGE_END => <constant_expr> ]
[, PIPE_NAME => '<string>' ] )
인자 (Arguments)
모든 인자는 선택 사항입니다.
DATE_RANGE_START => constant_expr, DATE_RANGE_END => constant_expr
데이터 로드 히스토리를 검색할 날짜/시간 범위로, 지난 2주 이내여야 합니다:
- 종료 날짜를 지정하지 않으면 CURRENT_DATE가 범위의 끝으로 사용됩니다.
- 시작 날짜를 지정하지 않으면 범위는 DATE_RANGE_END의 시작 10분 전부터 시작됩니다(즉 기본값은 이전 10분의 데이터 로드 히스토리를 보여줍니다). 예를 들어 DATE_RANGE_END가 CURRENT_DATE이면 기본 DATE_RANGE_START는 전날 11:50 PM입니다.
- 히스토리는 지정된 범위의 길이에 따라 5분, 1시간 또는 24시간 단위로 표시됩니다.
범위가 지난 15일 밖에 있으면 오류가 반환됩니다.
PIPE_NAME => string
파이프를 지정하는 문자열입니다. 지정된 파이프를 사용하는 데이터 로드만 반환됩니다. 파이프 이름을 지정하지 않으면 결과의 PIPE_NAME 컬럼이 NULL로 표시됩니다. 각 행은 시간 범위 안에서 사용 중인 모든 파이프의 합계를 포함합니다.
사용 참고 (Usage notes)
- ACCOUNTADMIN 역할 또는 MONITOR USAGE 전역 권한이 명시적으로 부여된 역할에 대해서만 결과를 반환합니다.
- Information Schema 테이블 함수를 호출할 때는 세션이 INFORMATION_SCHEMA 스키마를 사용 중이거나 함수 이름이 완전히 한정되어야 합니다. 자세한 내용은 Snowflake Information Schema를 참고하세요.
- 때때로 데이터 압축 및 유지보수(data compaction and maintenance) 과정이 Snowflake 크레딧을 소비할 수 있습니다. 예를 들어 반환된 결과가 0 BYTES_INSERTED와 0 FILES_INSERTED로 크레딧을 소비했다고 보여줄 수 있습니다. 이는 데이터가 로드되지 않고 있지만 데이터 압축 및 유지보수 과정이 일부 크레딧을 소비했다는 뜻입니다.
- Snowflake는 내부 명명 스테이지 또는 외부 스테이지의 외부 테이블과 디렉터리 테이블의 자동 새로고침 알림에 대해 Snowpipe 파일 요금과 동등한 요율로 과금합니다. 외부 테이블과 디렉터리 테이블 자동 새로고침 알림으로 발생한 요금을 추정하려면 PIPE_USAGE_HISTORY 함수를 조회하거나 Account Usage PIPE_USAGE_HISTORY 뷰를 검토하세요. 자동 새로고침 파이프는 NULL 파이프 이름 아래에 나열됩니다. 또한 외부 테이블 자동 새로고침 알림 히스토리를 테이블/스테이지 수준 세분성으로 보려면 Information Schema 테이블 함수 AUTO_REFRESH_REGISTRATION_HISTORY를 사용할 수 있습니다.
자동 새로고침 알림에 대한 요금을 피하려면 외부 테이블과 디렉터리 테이블에 대해 수동 새로고침을 수행하세요. 외부 테이블의 경우 ALTER EXTERNAL TABLE <name> REFRESH … 문으로 외부 테이블을 외부 스토리지에 수동 동기화할 수 있습니다. 디렉터리 테이블의 경우 ALTER STAGE <name> REFRESH … 문으로 디렉터리를 외부 스토리지에 수동 동기화할 수 있습니다.
출력 (Output)
함수는 다음 컬럼을 반환합니다:
| 컬럼 이름 | 데이터 타입 | 설명 |
|---|---|---|
| START_TIME | TIMESTAMP_LTZ | 데이터 로드가 일어난 지정된 시간 범위의 시작. |
| END_TIME | TIMESTAMP_LTZ | 데이터 로드가 일어난 지정된 시간 범위의 끝. |
| PIPE_NAME | TEXT | 데이터 로드에 사용된 파이프의 이름. 쿼리에 파이프 이름을 지정하지 않으면 NULL 표시. 각 행은 시간 범위 안에서 사용 중인 모든 파이프의 합계를 포함. |
| CREDITS_USED | TEXT | START_TIME과 END_TIME 창 동안 Snowpipe 데이터 로드에 과금된 크레딧 수. |
| BYTES_INSERTED | NUMBER | START_TIME과 END_TIME 창 동안 로드된 바이트 수. |
| FILES_INSERTED | NUMBER | START_TIME과 END_TIME 창 동안 로드된 파일 수. |
| BYTES_BILLED | NUMBER | Snowpipe가 과금 목적으로 사용하는 바이트 수를 나타내며, 이 히스토리 뷰 안에서 직접 Snowpipe 비용 영향을 파악할 수 있게 함. |
예제 (Examples)
계정의 모든 파이프에 대해 특정 30분 범위의 데이터 로드 히스토리를 5분 단위로 검색합니다:
select *
from table(information_schema.pipe_usage_history(
date_range_start=>to_timestamp_tz('2017-10-24 12:00:00.000 -0700'),
date_range_end=>to_timestamp_tz('2017-10-24 12:30:00.000 -0700')));
계정의 모든 파이프에 대해 지난 14일의 데이터 로드 히스토리를 1일 단위로 검색합니다:
select *
from table(information_schema.pipe_usage_history(
date_range_start=>dateadd('day',-14,current_date()),
date_range_end=>current_date()));
계정의 지정된 파이프에 대해 지난 12시간의 데이터 로드 히스토리를 1시간 단위로 검색합니다:
select *
from table(information_schema.pipe_usage_history(
date_range_start=>dateadd('hour',-12,current_timestamp()),
pipe_name=>'mydb.public.mypipe'));
계정의 지정된 파이프에 대해 지난 14일의 데이터 로드 히스토리를 1일 단위로 검색합니다:
select *
from table(information_schema.pipe_usage_history(
date_range_start=>dateadd('day',-14,current_date()),
date_range_end=>current_date(),
pipe_name=>'mydb.public.mypipe'));