- Kategorien:
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:
QUERY_HISTORY-Ansicht (Account Usage) Abfrageaktivität mit Abfrageverlauf überwachen (Snowsight-Dashboard)
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> ] )
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
bis10000
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 bei einer Replikationsoperation von einem anderen Konto übertragen wurden. Das Quellkonto kann sich in derselben Region oder in einer anderen Region als das aktuelle Konto befinden. |
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 |
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. |
QUERY_HASH_VERSION |
NUMBER |
Die Version der Logik, die zur Berechnung von |
QUERY_PARAMETERIZED_HASH |
TEXT |
Der Hash-Wert, der auf Grundlage der parametrisierten Abfrage berechnet wird. |
QUERY_PARAMETERIZED_HASH_VERSION |
NUMBER |
Die Version der Logik, die zur Berechnung von |
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;
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;
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;
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')));