카테고리:

Information Schema , 테이블 함수

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(
      [ 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> ] )
Copy

인자

모든 인자는 선택 사항입니다.

END_TIME_RANGE_START => constant_expr , . END_TIME_RANGE_END => constant_expr

쿼리 실행이 완료된 지난 7일 이내의 시간 범위(TIMESTAMP_LTZ 형식):

  • END_TIME_RANGE_END 를 지정하지 않으면 함수는 여전히 실행 중인 쿼리를 포함하여 모든 쿼리를 반환합니다.

  • END_TIME_RANGE_ENDCURRENT_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

major_release.minor_release.patch_release 형식의 릴리스 버전입니다.

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 텍스트를 기반으로 계산된 해시 값 입니다. 1

QUERY_HASH_VERSION

NUMBER

QUERY_HASH 계산에 사용되는 논리 버전 입니다. 1

QUERY_PARAMETERIZED_HASH

TEXT

매개 변수가 있는 쿼리를 기반으로 계산된 해시 값 입니다. 1

QUERY_PARAMETERIZED_HASH_VERSION

NUMBER

QUERY_PARAMETERIZED_HASH 계산에 사용되는 논리 버전 입니다. 1

1(1,2,3,4)

이 열은 2023_06 동작 변경 번들이 활성화된 경우에만 존재합니다. 이 열은 쿼리 해시 기능의 일부입니다.

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;
Copy

다음과 같이 현재 사용자가 실행한(또는 현재 사용자에게 MONITOR 권한이 있는 웨어하우스에서 모든 사용자가 실행한) 마지막 100개의 쿼리를 검색합니다.

select *
from table(information_schema.query_history())
order by start_time;
Copy

다음과 같이 지난 1시간 동안 현재 사용자가 실행한(또는 현재 사용자에게 MONITOR 권한이 있는 웨어하우스에서 모든 사용자가 실행한) 마지막 100개의 쿼리를 검색합니다.

select *
from table(information_schema.query_history(dateadd('hours',-1,current_timestamp()),current_timestamp()))
order by start_time;
Copy

다음과 같이 지난 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')));
Copy