JavaScript에서 추적 이벤트 내보내기

Snowflake JavaScript APIsnowflake 클래스를 사용하여 JavaScript로 작성된 함수 또는 프로시저 처리기에서 추적 이벤트를 내보낼 수 있습니다. JavaScript API는 JavaScript 처리기 코드에서 이미 제공됩니다.

추적 이벤트를 내보내기 전에 원하는 데이터가 이벤트 테이블에 저장되도록 추적 수준을 설정했는지 확인합니다. 자세한 내용은 로깅, 메트릭 및 추적을 위한 수준 설정하기 섹션을 참조하십시오.

참고

추적 이벤트 내보내기를 시작하려면 먼저 이벤트 테이블을 설정해야 합니다. 자세한 내용은 이벤트 테이블 개요 섹션을 참조하십시오.

이벤트 테이블에서 SELECT 명령을 실행하여 저장된 추적 이벤트 데이터에 액세스할 수 있습니다. 자세한 내용은 추적 데이터 보기 섹션을 참조하십시오.

Snowflake에서 로깅 설정 및 메시지 검색에 대한 일반적인 정보는 함수와 프로시저의 추적 이벤트 섹션을 참조하십시오.

참고

추적 이벤트를 추가할 때 염두에 두어야 할 지침은 추적 이벤트를 추가하는 일반 지침 섹션을 참조하십시오.

추적 이벤트 추가하기

snowflake.addEvent 함수를 호출하고 이벤트 이름을 전달하여 추적 이벤트를 추가할 수 있습니다. 선택적으로 특성(키-값 페어)을 이벤트와 연결할 수도 있습니다.

addEvent 메서드는 다음 형식으로 사용할 수 있습니다.

snowflake.addEvent(name [, { key:value [, key:value] } ] );
Copy

다음 예제의 처리기 코드에서는 name_aname_b 의 두 이벤트가 추가됩니다. 이 코드에서 name_b 를 사용하면 scorepass 의 두 가지 특성도 추가됩니다.

create procedure PI_JS()
  returns double
  language javascript
  as
  $$
    snowflake.addEvent('name_a');  // add an event without attributes
    snowflake.addEvent('name_b', {'score': 89, 'pass': true});
    return 3.14;
  $$
  ;
Copy

이러한 특성을 설정하면 이벤트 테이블에 두 개의 행이 생기는데, RECORD 열의 값이 각각 다릅니다.

{
  "name": "name_a"
}
Copy
{
  "name": "name_b"
}
Copy

name_b 이벤트 행의 RECORD_ATTRIBUTES 열에 다음 특성을 포함합니다.

{
  "score": 89,
  "pass": true
}
Copy

범위 특성 추가하기

snowflake.setSpanAttribute 함수를 호출하여 범위와 연결된 특성(키-값 페어)을 설정할 수 있습니다.

setSpanAttribute 함수는 다음 형식으로 사용할 수 있습니다.

snowflake.setSpanAttribute(key, value);
Copy

범위에 대한 자세한 내용은 Snowflake가 추적 이벤트를 표시하는 방법 섹션을 참조하십시오.

다음 예제의 코드는 4가지 특성을 만들고 해당 값을 설정합니다.

// Setting span attributes.
snowflake.setSpanAttribute("example.boolean", true);
snowflake.setSpanAttribute("example.long", 2L);
snowflake.setSpanAttribute("example.double", 2.5);
snowflake.setSpanAttribute("example.string", "testAttribute");
Copy

이러한 특성을 설정하면 이벤트 테이블의 RECORD_ATTRIBUTES 열에 다음 내용이 표시됩니다.

{
  "example.boolean": true,
  "example.long": 2,
  "example.double": 2.5,
  "example.string": "testAttribute"
}
Copy

사용자 지정 범위 추가하기

참고

사용자 지정 범위에 대한 지원은 모든 계정에서 사용할 수 있는 미리 보기 기능입니다.

Snowflake에서 생성된 기본 범위와 별도로 사용자 지정 범위를 추가할 수 있습니다. 사용자 지정 범위에 대한 자세한 내용은 추적에 사용자 지정 범위 추가하기 섹션을 참조하십시오.

다음 예제의 코드는 OpenTelemetry API 를 사용하여 새 example_custom_span 범위를 생성합니다. 그런 다음 이벤트와 특성을 새 범위에 추가합니다. 마지막으로, 이 코드는 범위를 종료하여 이벤트 테이블에 해당 범위의 이벤트 데이터가 캡처되도록 합니다. 코드에서 Span.end 메서드를 호출하지 않으면 이벤트 테이블에 데이터가 캡처되지 않습니다.

CREATE OR REPLACE FUNCTION javascript_custom_span()
RETURNS STRING
LANGUAGE JAVASCRIPT
AS
$
const { trace } = opentelemetry;
const tracer = trace.getTracer("example_tracer");
// Alternatively, const tracer = opentelemetry.trace.getTracer("example_tracer");

tracer.startActiveSpan("example_custom_span", (span) => {
  span.addEvent("testEventWithAttributes");
  span.setAttribute("testAttribute", "value");

  span.end();
}
$$;
Copy