Schemas:

ACCOUNT_USAGE, READER_ACCOUNT_USAGE

Ansicht QUERY_HISTORY

Diese Account Usage-Ansicht kann verwendet werden, um den Snowflake-Abfrageverlauf innerhalb der letzten 365 Tage (1 Jahr) nach verschiedenen Dimensionen (Zeitbereich, Sitzung, Benutzer, Warehouse usw.) abzufragen.

Die Ansicht ist in den Schemas ACCOUNT_USAGE und READER_ACCOUNT_USAGE mit folgenden Unterschieden verfügbar:

  • Die folgenden Spalten sind nur in der Ansicht des Leserkontos verfügbar:

    • READER_ACCOUNT_NAME

    • READER_ACCOUNT_DELETED_ON

Alternativ können Sie auch die Information Schema-Tabellenfunktion, auch QUERY_HISTORY genannt, aufrufen. Beachten Sie jedoch, dass die Tabellenfunktion die Ergebnisse auf die Aktivitäten der letzten 7 Tage beschränkt, während die Ansicht Account Usage 365 Tage umfasst. Siehe die Beschreibung der QUERY_HISTORY-Funktion.

Siehe auch:

Spalten

Die Spalte Nur in Reader Account Usage-Ansichten verfügbar in der folgenden Tabelle zeigt an, ob die Spalte QUERY_HISTORY im Schema READER_ACCOUNT_USAGE verfügbar ist.

Spaltenname

Datentyp

Beschreibung

Nur in Reader Account Usage-Ansichten verfügbar

reader_account_name

VARCHAR

Name des Leserkontos, in dem die SQL-Anweisung ausgeführt wurde.

query_id

VARCHAR

Interner/vom System generierter Bezeichner für die SQL-Anweisung.

query_text

VARCHAR

Text der SQL-Anweisung. Das Limit beträgt 100K Zeichen. SQL-Anweisungen, die mehr als 100K Zeichen enthalten, werden abgeschnitten.

database_id

NUMBER

Interner/systemgenerierter Bezeichner für die Datenbank, die verwendet wurde.

database_name

VARCHAR

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

schema_id

NUMBER

Interner/vom System generierter Bezeichner für das Schema, die verwendet wurde.

schema_name

VARCHAR

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

query_type

VARCHAR

DML, Abfrage usw. Wenn die Abfrage fehlgeschlagen ist, kann der Abfragetyp UNKNOWN lauten.

session_id

NUMBER

Sitzung, die die Anweisung ausgeführt hat.

user_name

VARCHAR

Benutzer, der die Abfrage ausgegeben hat.

role_name

VARCHAR

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

warehouse_id

NUMBER

Interner/vom System generierter Bezeichner für das Warehouse, das verwendet wurde.

warehouse_name

VARCHAR

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

warehouse_size

VARCHAR

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

warehouse_type

VARCHAR

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

VARCHAR

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

execution_status

VARCHAR

Ausführungsstatus der Abfrage. Gültige Werte: success (Erfolg), fail (Fehler), incident (Vorfall).

error_code

NUMBER

Fehlercode, wenn die Abfrage einen Fehler zurückgegeben hat

error_message

VARCHAR

Fehlermeldung, wenn die Abfrage einen Fehler zurückgegeben hat

start_time

TIMESTAMP_LTZ

Startzeit der Anweisung (in der lokalen Zeitzone)

end_time

TIMESTAMP_LTZ

Endzeit der Anweisung (in der lokalen Zeitzone)

total_elapsed_time

NUMBER

Verstrichene Zeit (in Millisekunden)

bytes_scanned

NUMBER

Anzahl der von dieser Anweisung gescannten Bytes.

percentage_scanned_from_cache

FLOAT

Prozentsatz der Daten, die vom lokalen Festplattencache gescannt wurden. Der Wertebereich reicht von 0,0 bis 1,0. Sie können mit 100 multiplizieren, um einen wahren Prozentsatz zu erhalten.

bytes_written

NUMBER

Anzahl der Bytes, die geschrieben wurden (z. B. beim Laden in eine Tabelle).

bytes_written_to_result

NUMBER

Anzahl der Bytes, die in ein Ergebnisobjekt geschrieben wurden. Beispielsweise würde select * from . . . eine Menge von Ergebnissen im Tabellenformat für jedes Feld in der Auswahl liefern. . . Im Allgemeinen repräsentiert das Ergebnisobjekt das, was als Ergebnis der Abfrage erzeugt wird, und BYTES_WRITTEN_TO_RESULT steht für die Größe des zurückgegebenen Ergebnisses.

bytes_read_from_result

NUMBER

Anzahl der Bytes, die aus einem Ergebnisobjekt gelesen wurden.

rows_produced

NUMBER

Anzahl der Zeilen, die von dieser Anweisung erzeugt wurden. Die Spalte ROWS_PRODUCED wird in einem zukünftigen Release veraltet sein. Der Wert in der Spalte ROWS_PRODUCED spiegelt nicht immer die logische Anzahl der Zeilen wider, die von einer Abfrage betroffenen sind. Snowflake empfiehlt stattdessen die Verwendung der Spalten ROWS_INSERTED, ROWS_UPDATED, ROWS_WRITTEN_TO RESULTS und ROWS_DELETED.

rows_inserted

NUMBER

Anzahl der Zeilen, die von der Abfrage eingefügt wurden.

rows_updated

NUMBER

Anzahl der Zeilen, die von der Abfrage aktualisiert wurden.

rows_deleted

NUMBER

Anzahl der Zeilen, die von der Abfrage gelöscht wurden.

rows_unloaded

NUMBER

Anzahl der Zeilen, die während des Datenexports entladen wurden.

bytes_deleted

NUMBER

Anzahl der Bytes, die von der Abfrage gelöscht wurden.

partitions_scanned

NUMBER

Anzahl der gescannten Mikropartitionen.

partitions_total

NUMBER

Gesamtzahl der Mikropartitionen aller Tabellen, die in dieser Abfrage enthalten sind.

bytes_spilled_to_local_storage

NUMBER

Datenmenge, die auf eine lokale Festplatte übertragen wurde.

bytes_spilled_to_remote_storage

NUMBER

Datenmenge, die auf eine externe Festplatte übertragen wurde.

bytes_sent_over_the_network

NUMBER

Datenmenge, die über das Netzwerk gesendete wurde.

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), während der eine Sperre durch eine gleichzeitige DML-Operation aktiv war.

outbound_data_transfer_cloud

VARCHAR

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

outbound_data_transfer_region

VARCHAR

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

outbound_data_transfer_bytes

NUMBER

Anzahl der Bytes, die mit Anweisungen zum Entladen von Daten aus Snowflake-Tabellen übertragen wurden.

inbound_data_transfer_cloud

VARCHAR

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

inbound_data_transfer_region

VARCHAR

Quellregion von 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_files_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. Dieser Wert berücksichtigt nicht die Anpassung für Clouddienste und kann daher höher sein als Ihre tatsächlich abgerechneten Credits. Um festzustellen, wie viele Credits tatsächlich in Rechnung gestellt wurden, führen Sie Abfragen auf der Ansicht METERING_DAILY_HISTORY aus.

reader_account_deleted_on

TIMESTAMP_LTZ

Uhrzeit und Datum (in der Zeitzone UTC) des Löschens des Lesekontos.

release_version

VARCHAR

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.

query_load_percent

NUMBER

Der ungefähre Prozentsatz der aktiven Computeressourcen im Warehouse für diese Abfrageausführung.

is_client_generated_statement

BOOLEAN

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

query_acceleration_bytes_scanned

NUMBER

Anzahl der vom Abfragebeschleunigungsdienst gescannten Bytes.

query_acceleration_partitions_scanned

NUMBER

Anzahl der vom Abfragebeschleunigungsdienst gescannten Partitionen.

query_acceleration_upper_limit_scale_factor

NUMBER

Oberes Limit des Skalierungsfaktors, der für eine Abfrage von Vorteil wäre.

transaction_id

NUMBER

ID der Transaktion, die die Anweisung enthält, oder 0, wenn die Anweisung nicht innerhalb einer Transaktion ausgeführt wird.

child_queries_wait_time

NUMBER

Zeit (in Millisekunden), die bei Aufruf einer memoisierbaren Funktion bis zum Abschluss der zwischengespeicherten Suche benötigt wird.

role_type

VARCHAR

Gibt an, ob die Abfrage von einer Rolle vom Typ APPLICATION, DATABASE_ROLE oder ROLE ausgeführt wurde.

query_hash

VARCHAR

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_HASH verwendet wird.

query_parameterized_hash

VARCHAR

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

query_parameterized_hash_version

NUMBER

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

secondary_role_stats

VARCHAR

Eine JSON-formatierte Zeichenfolge, die drei Felder zu den in der Abfrage ausgewerteten Sekundärrollen enthält: eine Liste der Sekundärrollen oder ALL je nach Sitzung, ein Zähler mit der Anzahl der Sekundärrollen und die interne/systemgenerierte ID jeder Sekundärrolle. Zähler und Anzahl von IDs haben ein Maximum von 50.

rows_written_to_result

NUMBER

Anzahl der Zeilen, die in ein Ergebnisobjekt geschrieben wurden. Für CREATE TABLE AS SELECT (CTAS) und alle DML-Operationen ist dieses Ergebnis 1.

query_retry_time

NUMBER

Gesamtausführungszeit (in Millisekunden) für Abfragewiederholungen, die durch behebbare Fehler verursacht wurden. Weitere Informationen dazu finden Sie unter Abfragewiederholungsspalten.

query_retry_cause

VARIANT

Array von Fehlermeldungen für behebbare Fehler. Das Array enthält eine Fehlermeldung für jeden Abfrageversuch. Wird die Abfrage nicht wiederholt, ist das Array leer. Weitere Informationen dazu finden Sie unter Abfragewiederholungsspalten.

fault_handling_time

NUMBER

Gesamtausführungszeit (in Millisekunden) für Abfragewiederholungen, die durch nicht behebbare Fehler verursacht wurden. Weitere Informationen dazu finden Sie unter Abfragewiederholungsspalten.

Nutzungshinweise

Allgemeines

  • Die Latenzzeit der Ansicht kann bis zu 45 Minuten betragen.

  • 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).

Abfragewiederholungsspalten

Es kann sein, dass eine Abfrage ein oder mehrere Male wiederholt werden muss, um erfolgreich abgeschlossen zu werden. Es kann mehrere Ursachen geben, die zu einer Wiederholung einer Abfrage führen. Einige dieser Ursachen sind behebbar, d. h. ein Benutzer kann Änderungen vornehmen, um Abfragewiederholungen für eine bestimmte Abfrage zu reduzieren oder zu vermeiden. Wenn beispielsweise eine Abfrage aufgrund von fehlendem Arbeitsspeicher wiederholt wird, kann das Problem durch Änderung der Warehouse-Einstellungen behoben werden.

Einige Abfragewiederholungen werden durch einen Fehler verursacht, der nicht behebbar ist. Das heißt, ein Benutzer kann keine Änderung vornehmen, um die Wiederholung der Abfrage zu verhindern. So kann beispielsweise die Abfragewiederholung durch einen Netzwerkausfall verursacht werden. In diesem Fall gibt es keine Änderung an der Abfrage oder an dem ausführenden Warehouse, mit der sich die Abfragewiederholung verhindern lässt.

Die Spalten QUERY_RETRY_TIME, QUERY_RETRY_CAUSE und FAULT_HANDLING_TIME können Ihnen helfen, Abfragen zu optimieren, die wiederholt werden, und Schwankungen in der Abfrageleistung besser zu verstehen.

Hybridtabellen

Die folgenden Hinweise beziehen sich auf die Ausführung von Abfragen auf Hybridtabellen unter Verwendung von QUERY_HISTORY-Ansichten.

  • Für Abfragen mit kurzer Ausführungszeit, die ausschließlich auf Hybridtabellen angewendet werden, werden in dieser Ansicht und in QUERY_HISTORY (Information Schema-Tabellenfunktion) keine Datensätze mehr generiert. Um solche Abfragen zu überwachen, verwenden Sie AGGREGATE_QUERY_HISTORY. Mit dieser Ansicht können Sie operative Workloads mit hohem Durchsatz für Trends und Themen leichter überwachen.

  • Auch für Abfragen mit kurzer Ausführungszeit, die ausschließlich auf Hybridtabellen angewendet werden, wird kein Query Profile mehr bereitgestellt, das Sie in der Snowsight prüfen können.

  • Abfragen auf Hybridtabelle generieren nur dann einen Datensatz in der Ansicht QUERY_HISTORY und ein Query Profile, wenn eine der folgenden Bedingungen erfüllt ist:

    • Eine Abfrage wird gegen einen anderen Tabellentyp als den Hybridtabellentyp ausgeführt. Diese Bedingung stellt sicher, dass es keine Verhaltensänderung für bestehende Nicht-Unistore-Workloads gibt.

    • Eine Abfrage schlägt mit einem EXECUTION_STATUS von failed_with_incident fehl (siehe QUERY_HISTORY). Diese Bedingung stellt sicher, dass Sie die fehlgeschlagene Abfrage untersuchen und melden können, um Unterstützung zu erhalten.

    • Die Ausführung einer Abfrage dauert länger als etwa 500 Millisekunden. Diese Bedingung stellt sicher, dass Sie Leistungsprobleme bei langsamen Abfragen untersuchen können.

    • Die Größe des Abfrageergebnisses ist zu groß.

    • Eine Abfrage ist mit einer Snowflake-Transaktion verbunden.

    • Eine Abfrage enthält eine Systemfunktion mit Nebeneffekten.

    • Eine Abfrage ist nicht einer der folgenden Anweisungstypen: SELECT, INSERT, DELETE, UPDATE, MERGE.

    • Eine Abfrage wird von SnowSQL, Snowsight oder Classic Console aus ausgeführt. Diese Bedingung stellt sicher, dass Sie manuell ein vollständiges Query Profile erstellen können, um Leistungsprobleme für eine bestimmte Abfrage zu untersuchen, auch wenn diese nicht als langlaufend eingestuft ist.

    • Auch wenn eine Abfrage keine der oben genannten Bedingungen erfüllt, können Abfragen regelmäßig stichprobenartig abgerufen werden, um einen Datensatz in der QUERY_HISTORY-Ansicht und ein Query Profile zu generieren und Sie so bei Ihren Untersuchungen zu unterstützen.

Befehle PUT und GET

Bei den Befehlen PUT und GET bedeutet ein EXECUTION_STATUS von success in der QUERY_HISTORY nicht, dass Datendateien erfolgreich hoch- oder heruntergeladen wurden. Stattdessen zeigt der Status an, dass Snowflake die Autorisierung erhalten hat, mit dem Datentransfer fortzufahren.