Kategorien:

Information Schema, Tabellenfunktionen

QUERY_HISTORY , QUERY_HISTORY_BY_*

Die Tabellenfunktionen der QUERY_HISTORY-Familie können verwendet werden, um den Snowflake-Abfrageverlauf anhand verschiedener Dimensionen abzufragen:

  • QUERY_HISTORY gibt Abfragen innerhalb eines angegebenen Zeitraums zurück.

  • QUERY_HISTORY_BY_SESSION gibt Abfragen innerhalb einer angegebenen Sitzung und eines bestimmten Zeitraums zurück.

  • QUERY_HISTORY_BY_USER gibt Abfragen zurück, die von einem bestimmten Benutzer innerhalb eines bestimmten Zeitraums gestellt wurden.

  • QUERY_HISTORY_BY_WAREHOUSE gibt Abfragen zurück, die von einem bestimmten Warehouse innerhalb eines bestimmten Zeitraums ausgeführt wurden.

Jede Funktion ist für die Abfrage anhand der angegebenen Dimension optimiert. Die Ergebnisse können mit SQL-Prädikaten weiter gefiltert werden.

Bemerkung

Diese Funktionen geben die Abfrageaktivität in den letzten 7 Tagen zurück.

Siehe auch:

Syntax

QUERY_HISTORY(
      [ END_TIME_RANGE_START => <constant_expr> ]
      [, END_TIME_RANGE_END => <constant_expr> ]
      [, RESULT_LIMIT => <num> ] )

QUERY_HISTORY_BY_SESSION(
      [ SESSION_ID => <constant_expr> ]
      [, END_TIME_RANGE_START => <constant_expr> ]
      [, END_TIME_RANGE_END => <constant_expr> ]
      [, RESULT_LIMIT => <num> ] )

QUERY_HISTORY_BY_USER(
      [ USER_NAME => '<string>' ]
      [, END_TIME_RANGE_START => <constant_expr> ]
      [, END_TIME_RANGE_END => <constant_expr> ]
      [, RESULT_LIMIT => <num> ] )

QUERY_HISTORY_BY_WAREHOUSE(
      [ WAREHOUSE_NAME => '<string>' ]
      [, END_TIME_RANGE_START => <constant_expr> ]
      [, END_TIME_RANGE_END => <constant_expr> ]
      [, RESULT_LIMIT => <num> ] )
Copy

Argumente

Alle Argumente sind optional.

END_TIME_RANGE_START => constant_expr, . END_TIME_RANGE_END => constant_expr

Zeitbereich (im Format TIMESTAMP_LTZ) innerhalb der letzten 7 Tage, in der die Abfrage fertig ausgeführt wurde:

  • Wenn END_TIME_RANGE_END nicht angegeben ist, gibt die Funktion alle Abfragen zurück, auch jene, die noch ausgeführt werden.

  • Wenn END_TIME_RANGE_END den Wert CURRENT_TIMESTAMP aufweist, gibt die Funktion nur jene Abfragen zurück, die abgeschlossen wurden.

Wenn der Zeitbereich nicht in den letzten 7 Tagen liegt, wird ein Fehler zurückgegeben.

Bemerkung

Wenn keine Start- oder Endzeiten angegeben sind, werden die letzten Abfragen bis zum angegebenen Limit zurückgegeben.

SESSION_ID => constant_expr

Gilt nur für QUERY_HISTORY_BY_SESSION

Der numerische Bezeichner für eine Sitzung oder CURRENT_SESSION. Es werden nur Abfragen aus der angegebenen Sitzung zurückgegeben.

Standard: CURRENT_SESSION

USER_NAME => 'string'

Gilt nur für QUERY_HISTORY_BY_USER

Eine Zeichenfolge, die den Anmeldenamen eines Benutzers oder CURRENT_USER angibt. Es werden nur Abfragen zurückgegeben, die vom angegebenen Benutzer ausgeführt wurden. Beachten Sie, dass der Anmeldename in einfache Anführungszeichen gesetzt werden muss. Wenn der Anmeldename Leerzeichen, gemischte Groß- und Kleinbuchstaben oder Sonderzeichen enthält, muss der Name innerhalb der einfachen Anführungszeichen in doppelte Anführungszeichen gesetzt werden (z. B. '"User 1"' vs. 'user1').

Standard: CURRENT_USER

WAREHOUSE_NAME => 'string'

Gilt nur für QUERY_HISTORY_BY_WAREHOUSE

Eine Zeichenfolge, die einen Warehouse-Namen angibt, oder CURRENT_WAREHOUSE. Es werden nur von diesem Warehouse ausgeführte Abfragen zurückgegeben. Beachten Sie, dass der Warehouse-Name in einfache Anführungszeichen gesetzt werden muss. Wenn der Warehouse-Name Leerzeichen, Groß- und Kleinbuchstaben oder Sonderzeichen enthält, muss der Name außerdem innerhalb der einfachen Anführungszeichen in doppelte Anführungszeichen gesetzt werden (z. B. '"My Warehouse"' vs. 'mywarehouse').

Standard: CURRENT_WAREHOUSE

RESULT_LIMIT => num

Eine Zahl, die die maximale Anzahl der von der Funktion zurückgegebenen Zeilen angibt:

Wenn die Anzahl der übereinstimmenden Zeilen größer als dieser Grenzwert ist, werden die Abfragen mit der jüngsten Endzeit (oder Abfragen, die noch ausgeführt werden) zurückgegeben – bis zum angegebenen Grenzwert.

Bereich: 1 bis 10000

Standard: 100.

Nutzungshinweise

  • Gibt Abfragen zurück, die vom aktuellen Benutzer ausgeführt werden. Gibt auch Abfragen zurück, die von einem beliebigen Benutzer ausgeführt wurden, wenn die ausführende Rolle oder eine höhere Rolle in einer Hierarchie die Berechtigung MONITOR oder OPERATE für die Warehouses, in denen die Abfragen ausgeführt wurden. Weitere Informationen dazu finden Sie unter Berechtigungen von virtuellen Warehouses.

  • Beim Aufrufen einer Tabellenfunktion des Information Schema muss die Sitzung über ein aktives INFORMATION_SCHEMA-Schema verfügen oder der Funktionsname muss vollqualifiziert sein. Weitere Details dazu finden Sie unter Snowflake Information Schema.

  • Die Werte für die Spalten EXTERNAL_FUNCTION_TOTAL_INVOCATIONS, EXTERNAL_FUNCTION_TOTAL_SENT_ROWS, EXTERNAL_FUNCTION_TOTAL_RECEIVED_ROWS, EXTERNAL_FUNCTION_TOTAL_SENT_BYTES und EXTERNAL_FUNCTION_TOTAL_RECEIVED_BYTES werden von vielen Faktoren beeinflusst, darunter:

    • Anzahl der externen Funktionen in der Anweisung SQL.

    • Anzahl der Zeilen pro Batch, die an jeden Remotedienst gesendet werden.

    • Anzahl der Wiederholungen aufgrund vorübergehender Fehler (z. B. weil eine Antwort nicht innerhalb der erwarteten Zeit empfangen wurde).

Ausgabe

Die Funktion gibt die folgenden Spalten zurück:

Spaltenname

Datentyp

Beschreibung

QUERY_ID

TEXT

Die eindeutige ID der Anweisung.

QUERY_TEXT

TEXT

Text der SQL-Anweisung.

DATABASE_NAME

TEXT

Datenbank, die bei der Kompilierung im Kontext der Abfrage angegeben wurde.

SCHEMA_NAME

TEXT

Schema, das bei der Kompilierung im Kontext der Abfrage angegeben wurde.

QUERY_TYPE

TEXT

DML, Abfrage usw. Wenn die Abfrage gerade ausgeführt wird oder fehlgeschlagen ist, kann der Abfragetyp UNKNOWN lauten.

SESSION_ID

NUMBER

Sitzung, die die Anweisung ausgeführt hat.

USER_NAME

TEXT

Benutzer, der die Abfrage ausgegeben hat.

ROLE_NAME

TEXT

Rolle, die zum Zeitpunkt der Abfrage in der Sitzung aktiv war.

WAREHOUSE_NAME

TEXT

Warehouse, in dem die Abfrage ggf. ausgeführt wurde.

WAREHOUSE_SIZE

TEXT

Größe des Warehouses, als diese Anweisung ausgeführt wurde.

WAREHOUSE_TYPE

TEXT

Typ des Warehouse, als diese Anweisung ausgeführt wurde.

CLUSTER_NUMBER

NUMBER

Der Cluster (in einem Multi-Cluster-Warehouse), für den diese Anweisung ausgeführt wurde.

QUERY_TAG

TEXT

Abfrage-Tag, das für diese Anweisung über den Sitzungsparameter QUERY_TAG festgelegt wird.

EXECUTION_STATUS

TEXT

Ausführungsstatus der Abfrage: Fortsetzen des Warehouse (resuming_warehouse), aktiv (running), in Warteschlange gestellt (queued), blockiert (blocked), erfolgreich (success), fehlgeschlagen mit Fehler (failed_with_error) oder fehlgeschlagen mit Vorfall (failed_with_incident).

ERROR_CODE

NUMBER

Fehlercode, wenn die Abfrage einen Fehler zurückgegeben hat

ERROR_MESSAGE

TEXT

Fehlermeldung, wenn die Abfrage einen Fehler zurückgegeben hat

START_TIME

TIMESTAMP_LTZ

Startzeit der Anweisung

END_TIME

TIMESTAMP_LTZ

Endzeit der Anweisung Wenn die Abfrage noch ausgeführt wird, entspricht END_TIME dem UNIX-Epochenzeitstempel („1970-01-01 00:00:00“), der für die lokale Zeitzone angepasst ist. Für die Pacific Standard Time wäre dies beispielsweise „1969-12-31 16:00:00.000 -0800“.

TOTAL_ELAPSED_TIME

NUMBER

Verstrichene Zeit (in Millisekunden)

BYTES_SCANNED

NUMBER

Anzahl der von dieser Anweisung gescannten Bytes.

ROWS_PRODUCED

NUMBER

Anzahl der von dieser Anweisung erzeugten Zeilen.

COMPILATION_TIME

NUMBER

Kompilierungszeit (in Millisekunden)

EXECUTION_TIME

NUMBER

Ausführungsdauer (in Millisekunden)

QUEUED_PROVISIONING_TIME

NUMBER

Zeit (in Millisekunden), die in der Warehouse-Warteschlange auf die Bereitstellung von Warehouse-Computeressourcen gewartet wurde, weil Warehouses erstellt, fortgesetzt oder in der Größe geändert wurden.

QUEUED_REPAIR_TIME

NUMBER

Zeit (in Millisekunden), die in der Warehouse-Warteschlange gewartet wurde, bis Computeressourcen im Warehouse repariert waren.

QUEUED_OVERLOAD_TIME

NUMBER

Zeit (in Millisekunden), die in der Warehouse-Warteschlange gewartet wurde, weil das Warehouse durch die aktuelle Abfrage-Workload überlastet war.

TRANSACTION_BLOCKED_TIME

NUMBER

Zeit (in Millisekunden), in der eine Sperre durch eine gleichzeitige DML-Operation aktiv war.

OUTBOUND_DATA_TRANSFER_CLOUD

TEXT

Ziel-Cloudanbieter für Anweisungen, die Daten in eine andere Region und/oder Cloud entladen.

OUTBOUND_DATA_TRANSFER_REGION

TEXT

Zielregion für Anweisungen, die Daten in eine andere Region und/oder Cloud entladen.

OUTBOUND_DATA_TRANSFER_BYTES

NUMBER

Anzahl der Bytes, die in Anweisungen übertragen werden, die Daten in eine andere Region und/oder Cloud entladen.

INBOUND_DATA_TRANSFER_CLOUD

TEXT

Quell-Cloudanbieter für Anweisungen, die Daten aus einer anderen Region und/oder Cloud laden.

INBOUND_DATA_TRANSFER_REGION

TEXT

Quellregion für Anweisungen, die Daten aus einer anderen Region und/oder Cloud laden.

INBOUND_DATA_TRANSFER_BYTES

NUMBER

Anzahl der Bytes, die in Anweisungen übertragen werden, die Daten aus einer anderen Region und/oder Cloud laden.

LIST_EXTERNAL_FILE_TIME

NUMBER

Zeit (in Millisekunden) für das Auflisten externer Dateien.

CREDITS_USED_CLOUD_SERVICES

NUMBER

Anzahl der Credits, die für Clouddienste verbraucht wurden.

RELEASE_VERSION

TEXT

Release-Version im Format major_release.minor_release.patch_release (<Hauptversion>.<Nebenversion>.<Patchversion>).

EXTERNAL_FUNCTION_TOTAL_INVOCATIONS

NUMBER

Gesamtzahl, mit der durch diese Abfrage Remotedienste aufgerufen wurden. Weitere wichtige Details dazu finden Sie in den Nutzungshinweisen.

EXTERNAL_FUNCTION_TOTAL_SENT_ROWS

NUMBER

Gesamtzahl der Zeilen, die von dieser Abfrage bei allen Aufrufen an alle Remotedienste gesendet wurden.

EXTERNAL_FUNCTION_TOTAL_RECEIVED_ROWS

NUMBER

Gesamtzahl der Zeilen, die von dieser Abfrage bei allen Aufrufen von allen Remotediensten empfangen wurden.

EXTERNAL_FUNCTION_TOTAL_SENT_BYTES

NUMBER

Gesamtzahl der Bytes, die von dieser Abfrage bei allen Aufrufen an alle Remotedienste gesendet wurden.

EXTERNAL_FUNCTION_TOTAL_RECEIVED_BYTES

NUMBER

Gesamtzahl der Bytes, die von dieser Abfrage bei allen Aufrufen von allen Remotediensten empfangen wurden.

IS_CLIENT_GENERATED_STATEMENT

BOOLEAN

Gibt an, ob die Abfrage von einem Client generiert wurde.

QUERY_HASH

TEXT

Der Hash-Wert wird auf der Grundlage des kanonisierten SQL-Textes berechnet. 1

QUERY_HASH_VERSION

NUMBER

Die Version der Logik, die zur Berechnung von QUERY_HASH verwendet wird. 1

QUERY_PARAMETERIZED_HASH

TEXT

Der Hash-Wert wird auf der Grundlage der parametrisierten Abfrage berechnet. 1

QUERY_PARAMETERIZED_HASH_VERSION

NUMBER

Die Version der Logik, die zur Berechnung von QUERY_PARAMETERIZED_HASH verwendet wird. 1

1(1,2,3,4)

Diese Spalte ist nur vorhanden, wenn das Verhaltensänderungs-Bundle 2023_06 aktiviert ist. Diese Spalte ist Teil des Abfrage-Hash-Features.

Die Spalte QUERY_TYPE kann folgende Werte enthalten:

  • CREATE_USER

  • CREATE_ROLE

  • CREATE_NETWORK_POLICY

  • ALTER_ROLE

  • ALTER_NETWORK_POLICY

  • ALTER_ACCOUNT

  • DROP_SEQUENCE

  • DROP_USER

  • DROP_ROLE

  • DROP_NETWORK_POLICY

  • RENAME_NETWORK_POLICY

  • REVOKE

Beispiele

Abrufen der maximal 100 letzten Abfragen, die in der aktuellen Sitzung ausgeführt wurden:

select *
from table(information_schema.query_history_by_session())
order by start_time;
Copy

Abrufen der maximal 100 letzten Abfragen, die vom aktuellen Benutzer ausgeführt wurden (oder von einem beliebigen Benutzer für eine Warehouse ausgeführt werden, bei dem der aktuelle Benutzer über die Berechtigung MONITOR verfügt):

select *
from table(information_schema.query_history())
order by start_time;
Copy

Abrufen der maximal 100 letzten Abfragen, die in der vergangenen Stunde vom aktuellen Benutzer ausgeführt wurden (oder von einem beliebigen Benutzer für ein Warehouse ausgeführt werden, bei dem der aktuelle Benutzer über die Berechtigung MONITOR verfügt):

select *
from table(information_schema.query_history(dateadd('hours',-1,current_timestamp()),current_timestamp()))
order by start_time;
Copy

Abrufen aller Abfragen, die die aktuelle Benutzer ausgeführt hat (oder von einem beliebigen Benutzer für ein Warehouse ausgeführt wurden, bei dem der aktuelle Benutzer über die Berechtigung MONITOR verfügt) innerhalb eines bestimmten 30-Minuten-Zeitblocks in den letzten 7 Tagen:

select *
  from table(information_schema.query_history(
    END_TIME_RANGE_START=>to_timestamp_ltz('2017-12-4 12:00:00.000 -0700'),
    END_TIME_RANGE_END=>to_timestamp_ltz('2017-12-4 12:30:00.000 -0700')));
Copy