// Adding an event without attributes.Telemetry.addEvent("testEvent")// Adding an event with attributes.AttributeseventAttributes=Attributes.of(AttributeKey.stringKey("key"),"run",AttributeKey.longKey("result"),Long.valueOf(123))Telemetry.addEvent("testEventWithAttributes",eventAttributes)
以下示例中的代码使用 OpenTelemetry API (https://javadoc.io/doc/io.opentelemetry/opentelemetry-api/latest/index.html) 和 OpenTelemetry 上下文传播 API (https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-context-prop/latest/index.html) 来创建新的 my.span span。然后将事件添加到新的 span。最后,代码结束与 span 相关的操作,以便在事件表中捕获 span 的事件数据。如果该代码不调用 Span.end 方法,则不会在事件表中捕获数据。
CREATEORREPLACEFUNCTIONtestScalaUserSpans(xVARCHAR)RETURNSVARCHARLANGUAGESCALARUNTIME_VERSION=2.12PACKAGES=('com.snowflake:telemetry:latest')HANDLER='TestScalaClass.run'AS$$classTestScalaClass{importcom.snowflake.telemetry.Telemetryimportio.opentelemetry.api.GlobalOpenTelemetryimportio.opentelemetry.api.trace.Tracerimportio.opentelemetry.api.trace.Spanimportio.opentelemetry.context.Scopedefrun(x:String):String={valtracer:Tracer=GlobalOpenTelemetry.getTracerProvider().get("my.tracer")valspan:Span=tracer.spanBuilder("my.span").startSpan()span.addEvent("test event from scala")span.end()returnx}} $$;
CREATEORREPLACEFUNCTIONtestScalaUserSpans(xVARCHAR)RETURNSVARCHARLANGUAGESCALARUNTIME_VERSION=2.13PACKAGES=('com.snowflake:telemetry:latest')HANDLER='TestScalaClass.run'AS$$classTestScalaClass{importcom.snowflake.telemetry.Telemetryimportio.opentelemetry.api.GlobalOpenTelemetryimportio.opentelemetry.api.trace.Tracerimportio.opentelemetry.api.trace.Spanimportio.opentelemetry.context.Scopedefrun(x:String):String={valtracer:Tracer=GlobalOpenTelemetry.getTracerProvider().get("my.tracer")valspan:Span=tracer.spanBuilder("my.span").startSpan()span.addEvent("test event from scala")span.end()returnx}} $$;
CREATEORREPLACEPROCEDUREdo_tracing()RETURNSSTRINGLANGUAGESCALARUNTIME_VERSION='2.12'PACKAGES=('com.snowflake:snowpark_2.12:latest','com.snowflake:telemetry:latest')HANDLER='ProcedureHandler.run'AS$$importcom.snowflake.snowpark_java.Sessionimportcom.snowflake.telemetry.Telemetryimportio.opentelemetry.api.common.AttributeKeyimportio.opentelemetry.api.common.AttributesclassProcedureHandler{defrun(session:Session):String={// Set span attribute.Telemetry.setSpanAttribute("example.proc.do_tracing","begin")// Add an event without attributes.Telemetry.addEvent("run_method_start")// Add an event with attributes.valeventAttributes:Attributes=Attributes.of(AttributeKey.stringKey("example.method.name"),"run")Telemetry.addEvent("event_with_attributes",eventAttributes)// Set span attribute.Telemetry.setSpanAttribute("example.proc.do_tracing","complete")return"SUCCESS"}} $$;
CREATEORREPLACEPROCEDUREdo_tracing()RETURNSSTRINGLANGUAGESCALARUNTIME_VERSION='2.13'PACKAGES=('com.snowflake:snowpark_2.13:latest','com.snowflake:telemetry:latest')HANDLER='ProcedureHandler.run'AS$$importcom.snowflake.snowpark_java.Sessionimportcom.snowflake.telemetry.Telemetryimportio.opentelemetry.api.common.AttributeKeyimportio.opentelemetry.api.common.AttributesclassProcedureHandler{defrun(session:Session):String={// Set span attribute.Telemetry.setSpanAttribute("example.proc.do_tracing","begin")// Add an event without attributes.Telemetry.addEvent("run_method_start")// Add an event with attributes.valeventAttributes:Attributes=Attributes.of(AttributeKey.stringKey("example.method.name"),"run")Telemetry.addEvent("event_with_attributes",eventAttributes)// Set span attribute.Telemetry.setSpanAttribute("example.proc.do_tracing","complete")return"SUCCESS"}} $$;