Zugriff auf Ablaufverfolgungsdaten¶
Ablaufverfolgungsdaten werden in einer Ereignistabelle gespeichert, die Sie zur Unterstützung der Ablaufverfolgung einrichten. Sie können auf die Daten zugreifen, indem Sie den Befehl SELECT auf der Ereignistabelle ausführen.
Bemerkung
Bevor Sie mit der Ausgabe von Ablaufverfolgungsdaten beginnen können, müssen Sie eine Ereignistabelle einrichten. Weitere Informationen dazu finden Sie unter Einrichten einer Ereignistabelle.
Eine Ereignistabelle hat einen Satz von vordefinierten Spalten, die Informationen über die protokollierten Meldungen erfassen, einschließlich:
Der Zeitstempel für den Zeitpunkt, an dem ein Bereich (Span) begann.
Zeitstempel für den Zeitpunkt, an dem das Ereignis erstellt wurde.
Der Typ der erfassten Daten, z. B. ob es sich um Daten für einen Bereich (Span) oder ein Bereichsereignis handelt.
Der Name des Bereichs oder Ereignisses.
Gegebenenfalls Attribute, die mit dem Bereich oder Ereignis verbunden sind.
Referenzinformationen zu den Ereignistabellenspalten finden Sie unter Spalten von Ereignistabellen.
Beispiel für die Abfrage von Ablaufverfolgungsdaten¶
In den folgenden Abschnitten wird anhand von Beispieldaten gezeigt, wie Sie die Ereignistabelle nach Ablaufverfolgungsdaten abfragen können.
Gesammelte Daten¶
Die Ausgabe im folgenden Beispiel zeigt den Inhalt einer ausgewählten Teilmenge von Spalten aus einer Ereignistabelle, nachdem Ablaufverfolgungsdaten für drei separate, in Python geschriebene Handler erfasst worden sind.
Referenzinformationen zu Ereignistabellenspalten, die Ablaufverfolgungsdaten sammeln, finden Sie unter Daten zu Ablaufverfolgungsereignissen.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 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-Auszüge
Die folgenden JSON-Auszüge enthalten zwei der in der RESOURCE_ATTRIBUTES-Spalte enthaltenen Attribute für jeden der drei Handler, deren Daten in der vorherigen Ausgabe enthalten sind. Der SELECT-Abfragecode, der diesen Auszügen folgt, wählt Werte von diesen Attributen aus.
Die Spalte RESOURCE_ATTRIBUTES enthält Daten zur Quelle des Ereignisses. Referenzinformationen dazu finden Sie unter RESOURCE_ATTRIBUTES-Spalte.
{
...
"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",
...
}
Abfragen mit SELECT-Anweisungen¶
Bei der Abfrage von Daten können Sie Attributwerte innerhalb einer Spalte auswählen, indem Sie die Klammernotation im folgenden Format verwenden:
COLUMN_NAME['attribute_name']
Der Code im folgenden Beispiel fragt die vorangehende Tabelle ab, um die mit der Funktion DIGITS_OF_NUMBER
verbundenen Daten zu isolieren.
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%';
Abfrageergebnisse¶
Die Ausgabe im folgenden Beispiel veranschaulicht das Ergebnis der Abfrage.
-------------------------------------------------------------------------------------------------------------------------------------------
| 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 | |
-------------------------------------------------------------------------------------------------------------------------------------------