Ausgeben von Ablaufverfolgungsereignissen in JavaScript¶
Sie können die Klasse snowflake
der Snowflake-JavaScript-API verwenden, um Ablaufverfolgungsereignisse von einem in JavaScript geschriebenen Funktions- oder Prozedur-Handler auszugeben. Die JavaScript-API steht für Ihren JavaScript-Handler-Code bereits zur Verfügung.
Stellen Sie vor dem Ausgeben von Ablaufverfolgungsereignissen sicher, dass der Protokolliergrad (Ablaufverfolgungsebene) so eingestellt ist, dass die gewünschten Meldungen in der Ereignistabelle gespeichert werden. Weitere Informationen dazu finden Sie unter Einstellung der Grade für Protokollierung, Metriken und Ablaufverfolgung.
Bemerkung
Bevor Sie mit der Ausgabe von Ablaufverfolgungsereignissen beginnen können, müssen Sie eine Ereignistabelle einrichten. Weitere Informationen dazu finden Sie unter Überblick über die Ereignisse.
Sie können auf die gespeicherten Daten zu den Ablaufverfolgungsereignissen zugreifen, indem Sie einen SELECT-Befehl auf der Ereignistabelle ausführen. Weitere Informationen dazu finden Sie unter Ablaufverfolgung anzeigen.
Allgemeine Informationen zur Einstellung der Protokollierung und zum Abrufen von Meldungen in Snowflake finden Sie unter Ablaufverfolgungsereignisse von Funktionen und Prozeduren.
Bemerkung
Richtlinien, die beim Hinzufügen von Ablaufverfolgungsereignissen berücksichtigt werden sollten, finden Sie unter Allgemeine Richtlinien für das Hinzufügen von Ablaufverfolgungsereignissen.
Hinzufügen von Ablaufverfolgungsereignissen¶
Sie können Ablaufverfolgungsereignisse hinzufügen, indem Sie die Funktion snowflake.addEvent
aufrufen und einen Namen für das Ereignis übergeben. Sie können einem Ereignis optional auch Attribute (Schlüssel-Wert-Paare) zuordnen.
Die Methode addEvent
ist in der folgenden Form verfügbar:
snowflake.addEvent(name [, { key:value [, key:value] } ] );
Der Handler-Code im folgenden Beispiel fügt zwei Ereignisse hinzu: name_a
und name_b
. Mit name_b
fügt der Code auch zwei Attribute hinzu: score
und pass
.
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;
$$
;
Das Festlegen dieser Attribute führt zu zwei Zeilen in der Ereignistabelle, die jeweils einen anderen Wert in der Spalte RECORD haben:
{
"name": "name_a"
}
{
"name": "name_b"
}
Die Ereigniszeile name_b
enthält in der Spalte RECORD_ATTRIBUTES die folgenden Attribute:
{
"score": 89,
"pass": true
}
Hinzufügen von Bereichsattributen¶
Durch Aufruf der Funktion snowflake.setSpanAttribute
können Sie Attribute (Schlüssel-Wert-Paare) festlegen, die bestimmten Bereichen (Spans) zugeordnet sind.
Die Funktion setSpanAttribute
ist in der folgenden Form verfügbar:
snowflake.setSpanAttribute(key, value);
Weitere Informationen zu Bereichen (Spans) finden Sie unter Darstellung von Ablaufverfolgungsereignissen in Snowflake.
Der Code im folgenden Beispiel erstellt vier Attribute und legt deren Werte fest:
// Setting span attributes.
snowflake.setSpanAttribute("example.boolean", true);
snowflake.setSpanAttribute("example.long", 2L);
snowflake.setSpanAttribute("example.double", 2.5);
snowflake.setSpanAttribute("example.string", "testAttribute");
Das Einstellen dieser Attribute führt in der Spalte RECORD_ATTRIBUTES der Ereignistabelle zu folgendem Ergebnis:
{
"example.boolean": true,
"example.long": 2,
"example.double": 2.5,
"example.string": "testAttribute"
}
Hinzufügen benutzerdefinierter Bereiche (Spans)¶
Bemerkung
Die Unterstützung für benutzerdefinierte Zeiträume ist ein Vorschau-Feature, das für alle Konten verfügbar ist.
Sie können benutzerdefinierte Bereiche (Spans) hinzufügen, die sich von dem von Snowflake erstellten Standardbereich unterscheiden. Weitere Informationen zu benutzerdefinierten Bereichen (Spans) finden Sie unter Hinzufügen von benutzerdefinierten Bereichen zu einer Ablaufverfolgung.
Der Code im folgenden Beispiel verwendet die OpenTelemetry API, um einen neuen example_custom_span
-Bereich (Span) zu erstellen. Es fügt dann ein Ereignis und ein Attribut zum neuen Bereich (Span) hinzu. Schließlich beendet der Code den Bereich (Span), damit die Ereignisdaten des Bereichs in der Ereignistabelle erfasst werden. Wenn der Code nicht die Span.end
-Methode aufruft, werden die Daten nicht in der Ereignistabelle erfasst.
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();
}
$$;