추적 데이터에 액세스하기¶
추적 데이터는 추적을 지원하도록 설정한 이벤트 테이블에 저장됩니다. 이벤트 테이블에서 SELECT 명령을 실행하여 데이터에 액세스할 수 있습니다.
참고
추적 데이터 내보내기를 시작하려면 먼저 이벤트 테이블을 설정해야 합니다. 자세한 내용은 이벤트 테이블 설정하기 섹션을 참조하십시오.
이벤트 테이블에는 다음을 포함하여 로깅된 메시지에 대한 정보를 캡처하는 미리 정의된 열 세트가 있습니다.
범위가 시작된 시점의 타임스탬프.
이벤트가 생성된 시점의 타임스탬프.
데이터가 범위 또는 범위 이벤트에 대한 것인지 여부와 같이, 기록된 데이터의 타입.
범위 또는 이벤트의 이름.
범위 또는 이벤트와 연결된 특성(있는 경우).
이벤트 테이블 열에 대한 참조 정보는 이벤트 테이블 열 섹션을 참조하십시오.
추적 데이터 쿼리의 예¶
다음 섹션에서는 예제 데이터를 사용하여 이벤트 테이블에서 추적 데이터를 쿼리하는 방법을 설명합니다.
수집된 데이터¶
다음 예제의 출력은 Python으로 작성된 세 개의 개별 처리기에 대해 추적 데이터를 캡처한 후 이벤트 테이블에서 선택한 열 하위 세트의 내용을 보여줍니다.
추적 데이터를 수집하는 이벤트 테이블 열에 대한 참조 정보는 추적 이벤트의 데이터 섹션을 참조하십시오.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| TIMESTAMP | START_TIMESTAMP | RESOURCE_ATTRIBUTES | RECORD_TYPE | RECORD | RECORD_ATTRIBUTES |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 | 2023-04-20 0:45:49 | **See excerpt below** | SPAN | { "kind": "SPAN_KIND_INTERNAL", "name": "snow.auto_instrumented", "status": { "code": "STATUS_CODE_UNSET" } } | |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 | | | SPAN_EVENT | { "name": "test_udtf_init" } | |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 | | | SPAN_EVENT | { "name": "test_udtf_process" } | { "input": "42" } |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 | | | SPAN_EVENT | { "name": "test_udtf_end_partition" } | |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:46:00 | 2023-04-20 0:46:00 | | SPAN | { "kind": "SPAN_KIND_INTERNAL", "name": "snow.auto_instrumented", "status": { "code": "STATUS_CODE_UNSET" } } | { "example.func.times_two": "begin", "example.func.times_two.response": 8 } |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:46:00 | | | SPAN_EVENT | { "name": "event_without_attributes" } | |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:46:00 | | | SPAN_EVENT | { "name": "event_with_attributes" } | { "example.key1": "value1", "example.key2": "value2" } |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:46:08 | 2023-04-20 0:46:08 | | SPAN | { "kind": "SPAN_KIND_INTERNAL", "name": "snow.auto_instrumented", "status": { "code": "STATUS_CODE_UNSET" } } | { "example.proc.do_tracing": "begin" } |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:46:08 | | | SPAN_EVENT | { "name": "event_with_attributes" } | { "example.key1": "value1", "example.key2": "value2" } |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
RESOURCE_ATTRIBUTES 발췌
다음 JSON 발췌 내용에는 이전 출력에 데이터가 포함된 세 처리기 각각에 대한 RESOURCE_ATTRIBUTES 열에 포함된 특성 중 두 개가 포함되어 있습니다. 이 발췌 내용 다음에 나오는 SELECT 쿼리 코드는 이러한 특성에서 값을 선택합니다.
RESOURCE_ATTRIBUTES 열에는 이벤트 원본에 대한 데이터가 있습니다. 참조 정보는 RESOURCE_ATTRIBUTES 열 섹션을 참조하십시오.
{
...
"snow.executable.name": "DIGITS_OF_NUMBER(INPUT NUMBER):TABLE: (RESULT NUMBER)",
"snow.executable.type": "FUNCTION",
...
}
{
...
"snow.executable.name": "TIMES_TWO(X NUMBER):NUMBER(38,0)",
"snow.executable.type": "FUNCTION",
...
}
{
...
"snow.executable.name": "DO_TRACING():VARIANT",
"snow.executable.type": "PROCEDURE",
...
}
SELECT 문을 사용한 쿼리¶
데이터를 쿼리할 때 다음 형식에서처럼 대괄호 표기법 을 사용하여 열 내의 특성 값을 선택할 수 있습니다.
COLUMN_NAME['attribute_name']
아래 예제의 코드는 DIGITS_OF_NUMBER
함수와 관련된 데이터를 분리하려는 의도로 선행 테이블을 쿼리합니다.
SET EVENT_TABLE_NAME='my_db.public.my_events';
SELECT
TIMESTAMP as time,
RESOURCE_ATTRIBUTES['snow.executable.name'] as handler_name,
RESOURCE_ATTRIBUTES['snow.executable.type'] as handler_type,
RECORD['name'] as event_name,
RECORD_ATTRIBUTES as attributes
FROM
IDENTIFIER($event_table_name)
WHERE
RECORD_TYPE = 'SPAN_EVENT'
AND HANDLER_NAME LIKE 'DIGITS_OF_NUMBER%';
쿼리 결과¶
다음 예제의 출력은 쿼리 결과를 보여줍니다.
-------------------------------------------------------------------------------------------------------------------------------------------
| TIME | HANDLER_NAME | HANDLER_TYPE | EVENT_NAME | ATTRIBUTES |
-------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 | DIGITS_OF_NUMBER(INPUT NUMBER):TABLE: (RESULT NUMBER) | FUNCTION | test_udtf_init | |
-------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 | DIGITS_OF_NUMBER(INPUT NUMBER):TABLE: (RESULT NUMBER) | FUNCTION | test_udtf_process | { "input": "42" } |
-------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 | DIGITS_OF_NUMBER(INPUT NUMBER):TABLE: (RESULT NUMBER) | FUNCTION | test_udtf_end_partition | |
-------------------------------------------------------------------------------------------------------------------------------------------