- 카테고리:
QUERY_HISTORY , QUERY_HISTORY_BY_*¶
다음과 같이 QUERY_HISTORY 테이블 함수 집합을 사용하여 다양한 차원에 따라 Snowflake 쿼리 기록을 쿼리할 수 있습니다.
QUERY_HISTORY는 지정된 시간 범위 내에서 쿼리를 반환합니다.
QUERY_HISTORY_BY_SESSION은 지정된 세션 및 시간 범위 내에서 쿼리를 반환합니다.
QUERY_HISTORY_BY_USER는 지정된 시간 범위 내에서 지정된 사용자가 제출한 쿼리를 반환합니다.
QUERY_HISTORY_BY_WAREHOUSE는 지정된 시간 범위 내에서 지정된 웨어하우스가 실행한 쿼리를 반환합니다.
각 함수는 지정된 차원을 따라 쿼리하도록 최적화되어 있습니다. 결과는 SQL 조건자를 사용하여 추가로 필터링할 수 있습니다.
참고
이러한 함수는 지난 7일 이내의 쿼리 활동을 반환합니다.
참고 항목:
QUERY_HISTORY 뷰 (Account Usage) 쿼리 기록으로 쿼리 활동 모니터링하기 (Snowsight 대시보드)
구문¶
QUERY_HISTORY(
[ END_TIME_RANGE_START => <constant_expr> ]
[, END_TIME_RANGE_END => <constant_expr> ]
[, RESULT_LIMIT => <num> ] )
QUERY_HISTORY_BY_SESSION(
[ SESSION_ID => <constant_expr> ]
[, END_TIME_RANGE_START => <constant_expr> ]
[, END_TIME_RANGE_END => <constant_expr> ]
[, RESULT_LIMIT => <num> ] )
QUERY_HISTORY_BY_USER(
[ USER_NAME => '<string>' ]
[, END_TIME_RANGE_START => <constant_expr> ]
[, END_TIME_RANGE_END => <constant_expr> ]
[, RESULT_LIMIT => <num> ] )
QUERY_HISTORY_BY_WAREHOUSE(
[ WAREHOUSE_NAME => '<string>' ]
[, END_TIME_RANGE_START => <constant_expr> ]
[, END_TIME_RANGE_END => <constant_expr> ]
[, RESULT_LIMIT => <num> ] )
인자¶
모든 인자는 선택 사항입니다.
END_TIME_RANGE_START => constant_expr
, .END_TIME_RANGE_END => constant_expr
쿼리 실행이 완료된 지난 7일 이내의 시간 범위(TIMESTAMP_LTZ 형식):
END_TIME_RANGE_END
를 지정하지 않으면 함수는 여전히 실행 중인 쿼리를 포함하여 모든 쿼리를 반환합니다.END_TIME_RANGE_END
가 CURRENT_TIMESTAMP 이면 함수는 완료된 쿼리만 반환합니다.
시간 범위가 지난 7일 이내에 속하지 않는 경우, 오류가 반환됩니다.
참고
시작 또는 종료 시간을 지정하지 않는 경우, 지정된 제한까지를 범위로 하여 가장 최근 쿼리가 반환됩니다.
SESSION_ID => constant_expr
QUERY_HISTORY_BY_SESSION에만 적용
세션 또는 CURRENT_SESSION 의 숫자 식별자입니다. 지정된 세션의 쿼리만 반환됩니다.
기본값: CURRENT_SESSION
USER_NAME => 'string'
QUERY_HISTORY_BY_USER에만 적용
사용자 로그인 이름 또는 CURRENT_USER 를 지정하는 문자열입니다. 지정된 사용자가 실행한 쿼리만 반환됩니다. 로그인 이름은 작은따옴표로 묶어야 합니다. 또한, 로그인 이름에 공백, 대/소문자 혼합 문자 또는 특수 문자가 포함된 경우, 이름을 작은따옴표 안에 큰따옴표로 묶어야 합니다(예:
'"User 1"'
vs'user1'
).기본값: CURRENT_USER
WAREHOUSE_NAME => 'string'
QUERY_HISTORY_BY_WAREHOUSE에만 적용
웨어하우스 이름 또는 CURRENT_WAREHOUSE 를 지정하는 문자열입니다. 해당 웨어하우스에서 실행한 쿼리만 반환됩니다. 웨어하우스 이름은 작은따옴표로 묶어야 합니다. 또한, 웨어하우스 이름에 공백, 대/소문자 혼합 문자 또는 특수 문자가 포함된 경우, 이름을 작은따옴표 안에 큰따옴표로 묶어야 합니다(예:
'"My Warehouse"'
vs'mywarehouse'
).기본값: CURRENT_WAREHOUSE
RESULT_LIMIT => num
함수가 반환하는 최대 행 수를 지정하는 숫자:
일치하는 행의 수가 이 제한보다 큰 경우, 지정된 제한까지를 범위로 하여 종료 시간이 가장 최근인 쿼리(또는 여전히 실행 중인 쿼리)가 반환됩니다.
범위:
1
~10000
기본값:
100
.
사용법 노트¶
현재 사용자가 실행한 쿼리를 반환합니다. 또한, 실행 역할이나, 계층의 상위 역할에 쿼리가 실행된 웨어하우스에 대한 MONITOR 또는 OPERATE 권한이 있을 때 모든 사용자가 실행한 쿼리를 반환합니다. 자세한 내용은 가상 웨어하우스 권한 섹션을 참조하십시오.
Information Schema 테이블 함수를 호출할 때 세션에는 사용 중인 INFORMATION_SCHEMA 스키마가 있거나 또는 함수 이름이 정규화되어야 합니다. 자세한 내용은 Snowflake Information Schema 섹션을 참조하십시오.
EXTERNAL_FUNCTION_TOTAL_INVOCATIONS, EXTERNAL_FUNCTION_TOTAL_SENT_ROWS, EXTERNAL_FUNCTION_TOTAL_RECEIVED_ROWS, EXTERNAL_FUNCTION_TOTAL_SENT_BYTES, EXTERNAL_FUNCTION_TOTAL_RECEIVED_BYTES 열의 값은 다음을 비롯한 여러 요인의 영향을 받습니다.
SQL 문에 있는 외부 함수의 수입니다.
각 원격 서비스에 보낸 배치당 행 수입니다.
일시적인 오류(예: 예상 시간 내에 응답이 수신되지 않았기 때문)로 인한 재시도 횟수입니다.
출력¶
이 함수는 다음 열을 반환합니다.
열 이름 |
데이터 타입 |
설명 |
---|---|---|
QUERY_ID |
TEXT |
문의 고유 ID입니다. |
QUERY_TEXT |
TEXT |
SQL 문의 텍스트입니다. |
DATABASE_NAME |
TEXT |
컴파일 시 쿼리 컨텍스트에 지정된 데이터베이스입니다. |
SCHEMA_NAME |
TEXT |
컴파일 시 쿼리 컨텍스트에 지정된 스키마입니다. |
QUERY_TYPE |
TEXT |
DML, 쿼리 등입니다. 쿼리가 현재 실행 중이거나 쿼리가 실패한 경우, 쿼리 유형이 UNKNOWN 일 수 있습니다. |
SESSION_ID |
NUMBER |
문을 실행한 세션입니다. |
USER_NAME |
TEXT |
쿼리를 실행한 사용자입니다. |
ROLE_NAME |
TEXT |
쿼리 당시 세션에서 활성 상태였던 역할입니다. |
WAREHOUSE_NAME |
TEXT |
쿼리가 실행된 웨어하우스입니다(있는 경우). |
WAREHOUSE_SIZE |
TEXT |
이 문이 실행될 때 웨어하우스의 크기입니다. |
WAREHOUSE_TYPE |
TEXT |
이 문이 실행될 때 웨어하우스의 유형입니다. |
CLUSTER_NUMBER |
NUMBER |
이 문이 실행된 클러스터(다중 클러스터 웨어하우스 내)입니다. |
QUERY_TAG |
TEXT |
QUERY_TAG 세션 매개 변수를 통해 이 문에 대해 설정된 쿼리 태그입니다. |
EXECUTION_STATUS |
TEXT |
쿼리의 실행 상태: resuming_warehouse, running, queued, blocked, success, failed_with_error 또는 failed_with_incident. |
ERROR_CODE |
NUMBER |
쿼리가 오류를 반환한 경우 오류 코드입니다. |
ERROR_MESSAGE |
TEXT |
쿼리가 오류를 반환한 경우 오류 메시지입니다. |
START_TIME |
TIMESTAMP_LTZ |
문 시작 시간입니다. |
END_TIME |
TIMESTAMP_LTZ |
문 종료 시간입니다. 쿼리가 여전히 실행 중인 경우, END_TIME 은 현지 타임존에 맞게 조정된 UNIX epoch 타임스탬프(“1970-01-01 00:00:00”)입니다. 예를 들어 태평양 표준시의 경우 “1969-12-31 16:00:00.000 -0800”이 됩니다. |
TOTAL_ELAPSED_TIME |
NUMBER |
경과 시간(밀리초)입니다. |
BYTES_SCANNED |
NUMBER |
이 문이 스캔한 바이트 수입니다. |
ROWS_PRODUCED |
NUMBER |
이 문이 생성한 행 수입니다. |
COMPILATION_TIME |
NUMBER |
컴파일 시간(밀리초)입니다. |
EXECUTION_TIME |
NUMBER |
실행 시간(밀리초)입니다. |
QUEUED_PROVISIONING_TIME |
NUMBER |
웨어하우스 큐에서 소요된 시간(밀리초)으로, 웨어하우스 생성, 재개 또는 크기 조정으로 인해 웨어하우스 컴퓨팅 리소스가 프로비저닝되기를 기다리는 데 걸린 시간입니다. |
QUEUED_REPAIR_TIME |
NUMBER |
웨어하우스 큐에서 소요된 시간(밀리초)으로, 웨어하우스의 컴퓨팅 리소스가 복구되기를 기다리는 데 걸린 시간입니다. |
QUEUED_OVERLOAD_TIME |
NUMBER |
현재 쿼리 워크로드로 인해 웨어하우스가 오버로드되어 웨어하우스 큐에서 소요된 시간(밀리초)입니다. |
TRANSACTION_BLOCKED_TIME |
NUMBER |
동시 DML에 의해 차단된 시간(밀리초)입니다. |
OUTBOUND_DATA_TRANSFER_CLOUD |
TEXT |
데이터를 다른 리전 및/또는 클라우드로 언로딩하는 문에 대한 대상 클라우드 공급자입니다. |
OUTBOUND_DATA_TRANSFER_REGION |
TEXT |
데이터를 다른 리전 및/또는 클라우드로 언로딩하는 문에 대한 대상 리전입니다. |
OUTBOUND_DATA_TRANSFER_BYTES |
NUMBER |
데이터를 다른 리전 및/또는 클라우드로 언로딩하는 문에서 전송된 바이트 수입니다. |
INBOUND_DATA_TRANSFER_CLOUD |
TEXT |
데이터를 다른 리전 및/또는 클라우드에서 로딩하는 문에 대한 소스 클라우드 공급자입니다. |
INBOUND_DATA_TRANSFER_REGION |
TEXT |
데이터를 다른 리전 및/또는 클라우드에서 로딩하는 문에 대한 소스 리전입니다. |
INBOUND_DATA_TRANSFER_BYTES |
NUMBER |
다른 계정에서 복제 작업으로 전송된 바이트 수입니다. 원본 계정은 현재 계정과 동일한 리전에 있을 수도 있고 다른 리전에 있을 수도 있습니다. |
LIST_EXTERNAL_FILE_TIME |
NUMBER |
외부 파일을 나열하는 데 소요된 시간(밀리초)입니다. |
CREDITS_USED_CLOUD_SERVICES |
NUMBER |
클라우드 서비스에 사용된 크레딧 수입니다. |
RELEASE_VERSION |
TEXT |
|
EXTERNAL_FUNCTION_TOTAL_INVOCATIONS |
NUMBER |
이 쿼리가 원격 서비스를 호출한 총 횟수입니다. 중요한 세부 정보는 사용법 노트를 참조하십시오. |
EXTERNAL_FUNCTION_TOTAL_SENT_ROWS |
NUMBER |
이 쿼리가 모든 원격 서비스에 대한 모든 호출에서 보낸 총 행 수입니다. |
EXTERNAL_FUNCTION_TOTAL_RECEIVED_ROWS |
NUMBER |
이 쿼리가 모든 원격 서비스에 대한 모든 호출에서 수신한 총 행 수입니다. |
EXTERNAL_FUNCTION_TOTAL_SENT_BYTES |
NUMBER |
이 쿼리가 모든 원격 서비스에 대한 모든 호출에서 보낸 총 바이트 수입니다. |
EXTERNAL_FUNCTION_TOTAL_RECEIVED_BYTES |
NUMBER |
이 쿼리가 모든 원격 서비스에 대한 모든 호출에서 수신한 총 바이트 수입니다. |
IS_CLIENT_GENERATED_STATEMENT |
BOOLEAN |
쿼리가 클라이언트에서 생성되었는지 여부를 나타냅니다. |
QUERY_HASH |
TEXT |
표준화된 SQL 텍스트를 기반으로 계산된 해시 값 입니다. |
QUERY_HASH_VERSION |
NUMBER |
|
QUERY_PARAMETERIZED_HASH |
TEXT |
매개 변수가 있는 쿼리를 기반으로 계산된 해시 값 입니다. |
QUERY_PARAMETERIZED_HASH_VERSION |
NUMBER |
|
QUERY_TYPE
열의 잠재적 값은 다음과 같습니다.
CREATE_USER
CREATE_ROLE
CREATE_NETWORK_POLICY
ALTER_ROLE
ALTER_NETWORK_POLICY
ALTER_ACCOUNT
DROP_SEQUENCE
DROP_USER
DROP_ROLE
DROP_NETWORK_POLICY
RENAME_NETWORK_POLICY
REVOKE
예¶
다음과 같이 현재 세션에서 실행된 최대 100개의 쿼리를 검색합니다.
select * from table(information_schema.query_history_by_session()) order by start_time;
다음과 같이 현재 사용자가 실행한(또는 현재 사용자에게 MONITOR 권한이 있는 웨어하우스에서 모든 사용자가 실행한) 마지막 100개의 쿼리를 검색합니다.
select * from table(information_schema.query_history()) order by start_time;
다음과 같이 지난 1시간 동안 현재 사용자가 실행한(또는 현재 사용자에게 MONITOR 권한이 있는 웨어하우스에서 모든 사용자가 실행한) 마지막 100개의 쿼리를 검색합니다.
select * from table(information_schema.query_history(dateadd('hours',-1,current_timestamp()),current_timestamp())) order by start_time;
다음과 같이 지난 7일 동안, 지정된 30분 시간 블록 내에 현재 사용자가 실행한(또는 현재 사용자에게 MONITOR 권한이 있는 웨어하우스에서 모든 사용자가 실행한) 모든 쿼리를 검색합니다.
select * from table(information_schema.query_history( END_TIME_RANGE_START=>to_timestamp_ltz('2017-12-4 12:00:00.000 -0700'), END_TIME_RANGE_END=>to_timestamp_ltz('2017-12-4 12:30:00.000 -0700')));