SYS_QUERY_TEXT - Amazon Redshift

SYS_QUERY_TEXT

SYS_QUERY_TEXT を使用すると、すべてのクエリのクエリテキストを表示できます。各行は、シーケンス番号 0 から始まる最大 4000 文字のクエリのクエリテキストを表します。クエリステートメントに 4000 文字を超える文字が含まれている場合は、各行のシーケンス番号を増やすことで、そのステートメントの追加の行がログに記録されます。このビューでは、DDL、ユーティリティ、Amazon Redshift クエリ、リーダーノードのみのクエリなど、すべてのユーザークエリテキストがログに記録されます。

SYS_QUERY_TEXT はすべてのユーザーが表示可能です。スーパーユーザーはすべての行を表示できますが、通常のユーザーは自分のデータのみを表示できます。詳細については、「システムテーブルとビューのデータの可視性」を参照してください。

テーブルの列

列名 データ型 説明
user_id integer クエリを送信したユーザーの ID。
query_id bigint クエリ識別子。
transaction_id bigint ステートメントに関連付けられているトランザクション ID。
session_id integer クエリを実行しているセッションのプロセス識別子。
start_time timestamp クエリが開始される時刻。
sequence integer 1 つのステートメントに含まれる文字数が 4000 を超える場合、そのステートメントは追加の行に記録されます。シーケンス 0 が最初の行、1 が 2 番目の行、という順番です。
text character (4000) 4000 文字単位の SQL クエリのテキスト。このフィールドには、バックスラッシュ (\) や改行 (\n) などの特殊文字が含まれる場合があります。

サンプルクエリ

次のクエリは、実行中とキューに登録されたクエリを返します。

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

サンプル出力。

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;

次のクエリは、データベース内のグループに付与されたアクセス許可、またはグループから取り消されたアクセス許可を返します。

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 | +-------------+----------+--------+----------+