STL_QUERYTEXT - Amazon Redshift

英語の翻訳が提供されている場合で、内容が矛盾する場合には、英語版がオリジナルとして取り扱われます。翻訳は機械翻訳により提供されています。

STL_QUERYTEXT

SQL コマンドのクエリテキストを取得します。

STL_QUERYTEXT ビューをクエリして、次のステートメントについてログされた SQL を取得します。

  • SELECT, SELECT INTO

  • INSERT, UPDATE, DELETE

  • COPY

  • UNLOAD

  • VACUUM, ANALYZE

  • CREATE TABLE AS (CTAS)

特定の期間におけるこれらのステートメントのアクティビティをクエリするには、STL_QUERYTEXT および STL_QUERY ビューを結合します。

注記

STL_QUERYおよびSTL_QUERYTEXTビューには、クエリーに関する情報のみが含まれ、他のユーティリティおよびDDLコマンドに関する情報は含まれません。によって実行されたすべてのステートメントのリストと情報については、 Amazon Redshiftでは、STL_DDLTEXT および STL_UTILITYTEXT ビューもクエリできます。Amazon Redshift によって実行されるすべてのステートメントの完全なリストを取得するには、SVL_STATEMENTTEXT ビューをクエリします。

STL_DDLTEXTSTL_UTILITYTEXTSVL_STATEMENTTEXT も参照してください。

このビュー はすべてのユーザーに表示されます。スーパーユーザーはすべての行を表示できます。通常のユーザーは自分のデータのみを表示できます。詳細については、「Visibility of data in system tables and views」を参照してください。

Table columns

列名。 データ型 説明:
userid integer エントリを生成したユーザーの ID。
xid bigint トランザクション ID。
pid integer プロセス ID。通常、セッション内のすべてのクエリは同一プロセスで実行されるため、一連のクエリを同一セッションで実行した場合、通常、この値は一定です。Amazon Redshift は特定の内部イベントに続いてアクティブなセッションを再起動し、新しい PID を割り当てる場合があります。詳細については、「STL_RESTARTED_SESSIONS」を参照してください。この列を使用して、 STL_ERROR 表示されます。
query integer クエリ ID。クエリ列は、他の各種システムテーブルおよびビューを結合するために使用できます。
sequence integer 1 つのステートメントに含まれる文字数が 200 を超える場合、そのステートメントは追加の行に記録されます。シーケンス 0 が最初の行、1 が 2 番目の行、という順番です。
$text character(200) 200 文字単位の SQL テキスト。このフィールドには、バックスラッシュ (\\) や改行 (\n) などの特殊文字が含まれる場合があります。

Sample queries

PG_BACKEND_PID() 関数を使用して、現在のセッションに関する情報を取得できます。たとえば、次のクエリは、現在のセッションで実行されたクエリのクエリ ID およびクエリテキスト部分を返します。

select query, substring(text,1,60) from stl_querytext where pid = pg_backend_pid() order by query desc; query | substring -------+-------------------------------------------------------------- 28262 | select query, substring(text,1,80) from stl_querytext where 28252 | select query, substring(path,0,80) as path from stl_unload_l 28248 | copy category from 's3://dw-tickit/manifest/category/1030_ma 28247 | Count rows in target table 28245 | unload ('select * from category') to 's3://dw-tickit/manifes 28240 | select query, substring(text,1,40) from stl_querytext where (6 rows)

Reconstructing stored SQL

STL_QUERYTEXT の text 列に保存されている SQL を再構築するには、SELECT ステートメントを実行して、text 列の 1 つ以上の部分から SQL を作成します。再構築された SQL を実行する前に、特殊文字 (\n) がある場合は、改行に置き換えます。次の SELECT ステートメントの結果は、query_statement フィールドに再構築された SQL の行です。

SELECT query, LISTAGG(CASE WHEN LEN(RTRIM(text)) = 0 THEN text ELSE RTRIM(text) END) WITHIN GROUP (ORDER BY sequence) as query_statement, COUNT(*) as row_count FROM stl_querytext GROUP BY query ORDER BY query desc;

たとえば、次のクエリでは 3 つの列を選択します。クエリ自体は 200 文字より長く、STL_QUERYTEXT の部分に保存されます。

select 1 AS a0123456789012345678901234567890123456789012345678901234567890, 2 AS b0123456789012345678901234567890123456789012345678901234567890, 3 AS b012345678901234567890123456789012345678901234 FROM stl_querytext;

この例では、クエリは STL_QUERYTEXT の text 列の 2 つの部分 (行) に保存されます。

select query, sequence, text from stl_querytext where query=pg_last_query_id() order by query desc, sequence limit 10;
query | sequence | text -------+----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 45 | 0 | select\n1 AS a0123456789012345678901234567890123456789012345678901234567890,\n2 AS b0123456789012345678901234567890123456789012345678901234567890,\n3 AS b012345678901234567890123456789012345678901234 45 | 1 | \nFROM stl_querytext;

STL_QUERYTEXT に保存された SQL を再構築するには、次の SQL を実行します。

select LISTAGG(CASE WHEN LEN(RTRIM(text)) = 0 THEN text ELSE RTRIM(text) END, '') within group (order by sequence) AS text from stl_querytext where query=pg_last_query_id();

再構築された SQL をクライアントで使用するには、特殊文字 (\n) を改行に置き換えます。

text ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ select\n1 AS a0123456789012345678901234567890123456789012345678901234567890,\n2 AS b0123456789012345678901234567890123456789012345678901234567890,\n3 AS b012345678901234567890123456789012345678901234\nFROM stl_querytext;