- 카테고리:
QUERY_HISTORY , QUERY_HISTORY_BY_*¶
테이블 함수의 QUERY_HISTORY 패밀리를 사용하여 다양한 차원에 따라 Snowflake 쿼리 기록을 쿼리할 수 있습니다.
QUERY_HISTORY는 지정된 시간 범위 내에서 쿼리를 반환합니다.
QUERY_HISTORY_BY_SESSION은 지정된 세션 및 시간 범위 내에서 쿼리를 반환합니다.
QUERY_HISTORY_BY_USER는 지정된 시간 범위 내에서 지정된 사용자가 제출한 쿼리를 반환합니다.
QUERY_HISTORY_BY_WAREHOUSE는 지정된 시간 범위 내에서 지정된 웨어하우스가 실행한 쿼리를 반환합니다.
각 함수는 지정된 차원을 따라 쿼리하도록 최적화되어 있습니다. 결과는 SQL 조건자를 사용하여 추가로 필터링할 수 있습니다.
참고 항목:
QUERY_HISTORY 뷰 (Account Usage) 쿼리 기록으로 쿼리 활동 모니터링하기 (Snowsight 대시보드)
구문¶
QUERY_HISTORY(
[ END_TIME_RANGE_START => <constant_expr> ]
[, END_TIME_RANGE_END => <constant_expr> ]
[, RESULT_LIMIT => <num> ]
[, INCLUDE_CLIENT_GENERATED_STATEMENT => <boolean_expr> ] )
QUERY_HISTORY_BY_SESSION(
[ SESSION_ID => <constant_expr> ]
[, END_TIME_RANGE_START => <constant_expr> ]
[, END_TIME_RANGE_END => <constant_expr> ]
[, RESULT_LIMIT => <num> ]
[, INCLUDE_CLIENT_GENERATED_STATEMENT => <boolean_expr> ] )
QUERY_HISTORY_BY_USER(
[ USER_NAME => '<string>' ]
[, END_TIME_RANGE_START => <constant_expr> ]
[, END_TIME_RANGE_END => <constant_expr> ]
[, RESULT_LIMIT => <num> ]
[, INCLUDE_CLIENT_GENERATED_STATEMENT => <boolean_expr> ] )
QUERY_HISTORY_BY_WAREHOUSE(
[ WAREHOUSE_NAME => '<string>' ]
[, END_TIME_RANGE_START => <constant_expr> ]
[, END_TIME_RANGE_END => <constant_expr> ]
[, RESULT_LIMIT => <num> ]
[, INCLUDE_CLIENT_GENERATED_STATEMENT => <boolean_expr> ] )
인자¶
모든 인자는 선택 사항입니다.
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'
). 사용자가 아닌 백그라운드 서비스인SYSTEM
(USER_NAME =>'SYSTEM'
)은 지정할 수 없습니다. 그러나 QUERY_HISTORY 테이블 함수에 대한 쿼리를 실행할 때user_name='SYSTEM'
에서 필터링할 수 있습니다.기본값: CURRENT_USER
WAREHOUSE_NAME => 'string'
QUERY_HISTORY_BY_WAREHOUSE에만 적용
웨어하우스 이름 또는 CURRENT_WAREHOUSE 를 지정하는 문자열입니다. 해당 웨어하우스에서 실행한 쿼리만 반환됩니다. 웨어하우스 이름은 작은따옴표로 묶어야 합니다. 또한, 웨어하우스 이름에 공백, 대/소문자 혼합 문자 또는 특수 문자가 포함된 경우, 이름을 작은따옴표 안에 큰따옴표로 묶어야 합니다(예:
'"My Warehouse"'
vs'mywarehouse'
).기본값: CURRENT_WAREHOUSE
RESULT_LIMIT => num
함수가 반환하는 최대 행 수를 지정하는 숫자:
일치하는 행의 수가 이 제한보다 큰 경우, 지정된 제한까지를 범위로 하여 종료 시간이 가장 최근인 쿼리(또는 여전히 실행 중인 쿼리)가 반환됩니다.
범위:
1
~10000
기본값:
100
.INCLUDE_CLIENT_GENERATED_STATEMENT => 'boolean_expr'
클라이언트 생성 문자를 테이블 함수 쿼리에 포함할지 여부를 지정합니다(
is_client_generated_statement
열의 값이 주어짐).기본값:
FALSE
.ACCOUNT_USAGE QUERY_HISTORY 뷰 에는
is_client_generated_statement
열도 포함되어 있지만, 이 뷰의 쿼리는 클라이언트 생성 여부에 관계없이 모든 문을 반환합니다. 필요한 경우 쿼리 결과를 필터링할 수 있습니다.
사용법 노트¶
현재 사용자가 실행한 쿼리를 반환합니다. 또한 실행 역할 또는 계층 구조에서 상위 역할이 다음 권한 중 하나를 가지고 있을 때 사용자가 실행한 쿼리를 반환합니다.
쿼리가 실행된 사용자 관리 웨어하우스에 대한 MONITOR 또는 OPERATE 권한이 있어야 합니다.
작업에 대한 MONITOR 또는 OPERATE 권한. 예외: 작업이 소유자 권한 저장 프로시저 또는 UDF 를 실행하는 경우 이 역할에는 저장 프로시저 쿼리 및 UDF 쿼리를 보기 위해 작업이 실행된 웨어하우스에 대한 MONITOR 이상의 권한이 필요합니다.
작업이 있는 계정에 대한 MONITOR EXECUTION 권한.
예외: 저장 프로시저 또는 사용자 정의 함수(UDF) 모두 이 쿼리를 실행할 수 없습니다.
자세한 내용은 가상 웨어하우스 권한 섹션을 참조하십시오.
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 문에 있는 외부 함수의 수입니다.
각 원격 서비스에 보낸 배치당 행 수입니다.
일시적인 오류(예: 예상 시간 내에 응답이 수신되지 않았기 때문)로 인한 재시도 횟수입니다.
취소된 쿼리는
execution_status
값이 아닌error_message
텍스트(SQL execution canceled
)로 식별됩니다.
쿼리 재시도 열¶
성공적으로 완료하려면 쿼리를 한 번 이상 다시 시도해야 할 수도 있습니다. 쿼리 재시도가 발생하는 원인은 여러 가지 있을 수 있습니다. 이러한 원인 중 일부는 실행 가능 합니다. 즉, 사용자가 특정 쿼리에 대한 쿼리 재시도를 줄이거나 없애기 위해 변경할 수 있습니다. 예를 들어 메모리 부족 오류로 인해 쿼리를 다시 시도하는 경우 웨어하우스 설정을 수정하면 문제가 해결될 수 있습니다.
일부 쿼리 재시도는 실행 불가능한 오류로 인해 발생합니다. 즉, 쿼리 재시도를 방지하기 위해 사용자가 변경할 수 있는 것이 없습니다. 예를 들어 네트워크 중단으로 인해 쿼리가 다시 시도될 수 있습니다. 이 경우 쿼리 재시도를 방해할 수 있는 쿼리 또는 쿼리를 실행하는 웨어하우스에는 변경 사항이 없습니다.
QUERY_RETRY_TIME, QUERY_RETRY_CAUSE 및 FAULT_HANDLING_TIME 열은 재시도되는 쿼리를 최적화하고 쿼리 성능의 변동을 더 잘 이해하는 데 도움이 될 수 있습니다.
출력¶
이 함수는 다음 열을 반환합니다.
열 이름 |
데이터 타입 |
설명 |
---|---|---|
|
VARCHAR |
문의 고유 ID입니다. |
|
VARCHAR |
SQL 문의 텍스트입니다. |
|
VARCHAR |
컴파일 시 쿼리 컨텍스트에 지정된 데이터베이스입니다. |
|
VARCHAR |
컴파일 시 쿼리 컨텍스트에 지정된 스키마입니다. |
|
VARCHAR |
DML, 쿼리 등입니다. 쿼리가 현재 실행 중이거나 쿼리가 실패한 경우, 쿼리 유형이 UNKNOWN 일 수 있습니다. |
|
NUMBER |
문을 실행한 세션입니다. |
|
VARCHAR |
쿼리를 실행한 사용자입니다. |
|
VARCHAR |
쿼리를 실행하는 사용자의 유형입니다. USERS 뷰 의 |
|
VARCHAR |
|
|
VARCHAR |
|
|
VARCHAR |
쿼리 당시 세션에서 활성 상태였던 역할입니다. |
|
VARCHAR |
쿼리가 실행된 웨어하우스입니다(있는 경우). |
|
VARCHAR |
이 문이 실행될 때 웨어하우스의 크기입니다. |
|
VARCHAR |
이 문이 실행될 때 웨어하우스의 유형입니다. |
|
NUMBER |
이 문이 실행된 클러스터(다중 클러스터 웨어하우스 내)입니다. |
|
VARCHAR |
QUERY_TAG 세션 매개 변수를 통해 이 문에 대해 설정된 쿼리 태그입니다. |
|
VARCHAR |
쿼리의 실행 상태: resuming_warehouse, running, queued, blocked, success, failed_with_error 또는 failed_with_incident. |
|
NUMBER |
쿼리가 오류를 반환한 경우 오류 코드입니다. |
|
VARCHAR |
쿼리가 오류를 반환한 경우 오류 메시지입니다. |
|
TIMESTAMP_LTZ |
문 시작 시간입니다. |
|
TIMESTAMP_LTZ |
문 종료 시간입니다. 쿼리가 여전히 실행 중인 경우, |
|
NUMBER |
경과 시간(밀리초)입니다. |
|
NUMBER |
이 문이 스캔한 바이트 수입니다. |
|
NUMBER |
이 문이 생성한 행 수입니다. |
|
NUMBER |
컴파일 시간(밀리초)입니다. |
|
NUMBER |
실행 시간(밀리초)입니다. |
|
NUMBER |
웨어하우스 큐에서 소요된 시간(밀리초)으로, 웨어하우스 생성, 재개 또는 크기 조정으로 인해 웨어하우스 컴퓨팅 리소스가 프로비저닝되기를 기다리는 데 걸린 시간입니다. |
|
NUMBER |
웨어하우스 큐에서 소요된 시간(밀리초)으로, 웨어하우스의 컴퓨팅 리소스가 복구되기를 기다리는 데 걸린 시간입니다. |
|
NUMBER |
현재 쿼리 워크로드로 인해 웨어하우스가 오버로드되어 웨어하우스 큐에서 소요된 시간(밀리초)입니다. |
|
NUMBER |
동시 DML에 의해 차단된 시간(밀리초)입니다. |
|
VARCHAR |
데이터를 다른 리전 및/또는 클라우드로 언로딩하는 문에 대한 대상 클라우드 공급자입니다. |
|
VARCHAR |
데이터를 다른 리전 및/또는 클라우드로 언로딩하는 문에 대한 대상 리전입니다. |
|
NUMBER |
데이터를 다른 리전 및/또는 클라우드로 언로딩하는 문에서 전송된 바이트 수입니다. |
|
VARCHAR |
데이터를 다른 리전 및/또는 클라우드에서 로딩하는 문에 대한 소스 클라우드 공급자입니다. |
|
VARCHAR |
데이터를 다른 리전 및/또는 클라우드에서 로딩하는 문에 대한 소스 리전입니다. |
|
NUMBER |
다른 계정에서 복제 작업으로 전송된 바이트 수입니다. 원본 계정은 현재 계정과 동일한 리전에 있을 수도 있고 다른 리전에 있을 수도 있습니다. |
|
NUMBER |
외부 파일을 나열하는 데 소요된 시간(밀리초)입니다. |
|
NUMBER |
클라우드 서비스에 사용된 크레딧 수입니다. |
|
VARCHAR |
|
|
NUMBER |
이 쿼리가 원격 서비스를 호출한 총 횟수입니다. 중요한 세부 정보는 사용법 노트를 참조하십시오. |
|
NUMBER |
이 쿼리가 모든 원격 서비스에 대한 모든 호출에서 보낸 총 행 수입니다. |
|
NUMBER |
이 쿼리가 모든 원격 서비스에 대한 모든 호출에서 수신한 총 행 수입니다. |
|
NUMBER |
이 쿼리가 모든 원격 서비스에 대한 모든 호출에서 보낸 총 바이트 수입니다. |
|
NUMBER |
이 쿼리가 모든 원격 서비스에 대한 모든 호출에서 수신한 총 바이트 수입니다. |
|
BOOLEAN |
쿼리가 클라이언트에서 생성되었는지 여부를 나타냅니다. |
|
VARCHAR |
표준화된 SQL 텍스트를 기반으로 계산된 해시 값 입니다. |
|
NUMBER |
|
|
VARCHAR |
매개 변수가 있는 쿼리를 기반으로 계산된 해시 값 입니다. |
|
NUMBER |
|
|
NUMBER |
문이 트랜잭션 내에서 실행되지 않는 경우 문 또는 |
|
NUMBER |
쿼리 가속 서비스 에서 스캔한 바이트의 수입니다. |
|
NUMBER |
쿼리 가속 서비스에서 스캔한 파티션의 수입니다. |
|
NUMBER |
쿼리가 혜택을 받았을 상한 배율 입니다. |
|
NUMBER |
결과 오브젝트에 작성된 바이트 수입니다. 예를 들어, |
|
NUMBER |
결과 오브젝트에 작성된 행 수입니다. CREATE TABLE AS SELECT(CTAS) 및 모든 DML 작업의 경우 이 결과는 |
|
NUMBER |
쿼리가 삽입한 행 수입니다. |
|
NUMBER |
실행 가능한 오류로 인해 발생한 쿼리 재시도의 총 실행 시간(밀리초)입니다. 자세한 내용은 쿼리 재시도 열 을 참조하십시오. |
|
VARCHAR |
쿼리를 다시 시도하는 되는 오류가 발생했습니다. 쿼리 재시도가 없는 경우 이 필드는 NULL 입니다. 자세한 내용은 쿼리 재시도 열 을 참조하십시오. |
|
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')));
my_xsmall_wh
라는 웨어하우스에 대해 실행된 클라이언트 생성 문의 수를 검색합니다.
SELECT COUNT(*)
FROM TABLE(INFORMATION_SCHEMA.QUERY_HISTORY_BY_WAREHOUSE(
WAREHOUSE_NAME => 'my_xsmall_wh',
INCLUDE_CLIENT_GENERATED_STATEMENT => TRUE));