- 카테고리:
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 | 실행 가능하지 않은 오류로 인해 발생한 쿼리 재시도의 총 실행 시간(밀리초)입니다. 자세한 내용은 쿼리 재시도 열 을 참조하십시오. | 
| 
 | ARRAY | 직렬화된 형식으로 값을 바인딩합니다. 쿼리에 바인드 값이 없으면 이 열에 빈 배열이 포함됩니다. 배열이 너무 크거나 ALLOW_BIND_VALUES_ACCESS 매개 변수가 ``FALSE``로 설정된 경우 이 열에는 NULL이 포함됩니다. 자세한 내용은 바인드 변수 값 검색하기 섹션을 참조하십시오. 이 열은 :doc:`2025_06 동작 변경 번들</release-notes/bcr-bundles/2025_06_bundle>`이 해당 계정에서 활성화되어 있는 경우에만 사용할 수 있습니다. 이 번들은 기본적으로 비활성화되어 있습니다. | 
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));