SYS_QUERY_TEXT - Amazon Redshift

Amazon Redshift unterstützt ab dem 1. November 2025 nicht mehr die Erstellung neuer Python-UDFs. Wenn Sie Python-UDFs verwenden möchten, erstellen Sie die UDFs vor diesem Datum. Bestehende Python-UDFs funktionieren weiterhin wie gewohnt. Weitere Informationen finden Sie im Blog-Posting.

SYS_QUERY_TEXT

Verwenden Sie SYS_QUERY_TEXT, um den Abfragetext aller Abfragen anzuzeigen. Jede Zeile stellt den Abfragetext von Abfragen mit bis zu 4 000 Zeichen dar, beginnend mit der Sequenznummer 0. Wenn die Abfrageanweisung mehr als 4 000 Zeichen enthält, werden zusätzliche Zeilen für die Anweisung protokolliert, indem die Sequenznummer für jede Zeile erhöht wird. In dieser Ansicht werden alle Benutzerabfragetexte protokolliert, z. B. DDL-, Utility-, Amazon-Redshift-Abfragen und reine Führungsknotenabfragen.

SYS_QUERY_TEXT ist für alle Benutzer sichtbar. Superuser können alle Zeilen sehen; reguläre Benutzer können nur ihre eigenen Daten sehen. Weitere Informationen finden Sie unter Sichtbarkeit der Daten in Systemtabellen und Ansichten.

Tabellenspalten

Spaltenname Datentyp Beschreibung
user_id integer Die ID des Benutzers, der die Abfrage gesendet hat.
query_id bigint Die Abfrage-ID.
transaction_id bigint Die ID der mit der Anweisung verbundenen Transaktion.
session_id Ganzzahl Die Prozess-ID der Sitzung, die die Abfrage ausführt.
start_time Zeitstempel Der Zeitpunkt, an dem die Abfrage gestartet wird.
sequence Ganzzahl Wenn eine einzelne Anweisung mehr als 4 000 Zeichen enthält, werden weitere Zeilen für diese Anweisung protokolliert. Sequenz 0 ist die erste Zeile, 1 die zweite Zeile usw.
text Zeichen (4000) Der Text der SQL-Abfrage, der in Schritten von 4 000 Zeichen angegeben ist. Diese Feld kann Sonderzeichen wie Backslash (\) und Zeilenumbruch (\n) enthalten.

Beispielabfragen

Die folgende Abfrage gibt laufende und in der Warteschlange stehende Abfragen zurück.

SELECT user_id, query_id, transaction_id, session_id, start_time, sequence, trim(text) as text from sys_query_text ORDER BY sequence;

Beispielausgabe.

user_id | query_id | transaction_id | session_id | start_time | sequence | text --------+----------+-----------------+------------+----------------------------+----------+---------------------------------------------------------------------------------------------------------------------- 100 | 4 | 1396 | 1073750220 | 2023-04-28 16:44:55.887184 | 0 | SELECT trim(text) as text, sequence FROM sys_query_text WHERE query_id = pg_last_query_id() AND user_id > 1 AND start _time > '2023-04-28 16:44:55.922705+00:00'::timestamp order by sequence;

Die folgende Abfrage gibt die Berechtigungen zurück, die Gruppen in Ihrer Datenbank erteilt oder entzogen wurden.

SELECT SPLIT_PART(text, ' ', 1) as grantrevoke, SPLIT_PART((SUBSTRING(text, STRPOS(UPPER(text), 'GROUP'))), ' ', 2) as group, SPLIT_PART((SUBSTRING(text, STRPOS(UPPER(text), ' '))), 'ON', 1) as type, SPLIT_PART((SUBSTRING(text, STRPOS(UPPER(text), 'ON'))), ' ', 2) || ' ' || SPLIT_PART((SUBSTRING(text, STRPOS(UPPER(text), 'ON'))), ' ', 3) as entity FROM SYS_QUERY_TEXT WHERE (text LIKE 'GRANT%' OR text LIKE 'REVOKE%') AND text LIKE '%GROUP%'; +-------------+----------+--------+----------+ | grantrevoke | group | type | entity | +-------------+----------+--------+----------+ | GRANT | bi_group | SELECT | TABLE t1 | | GRANT | bi_group | SELECT | TABLE t1 | | GRANT | bi_group | SELECT | TABLE t1 | | GRANT | bi_group | USAGE | TABLE t1 | | GRANT | bi_group | SELECT | TABLE t1 | | GRANT | bi_group | SELECT | TABLE t1 | +-------------+----------+--------+----------+