

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。

# STL\_QUERYTEXT
<a name="r_STL_QUERYTEXT"></a>

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\_DDLTEXT](r_STL_DDLTEXT.md)、[STL\_UTILITYTEXT](r_STL_UTILITYTEXT.md)、[SVL\_STATEMENTTEXT](r_SVL_STATEMENTTEXT.md) も参照してください。

STL\_QUERYTEXT はすべてのユーザーに表示されます。スーパーユーザーはすべての行を表示できますが、通常のユーザーは自分のデータのみを表示できます。詳細については、「[システムテーブルとビューのデータの可視性](cm_chap_system-tables.md#c_visibility-of-data)」を参照してください。

このテーブルの一部またはすべてのデータは、SYS モニタリングビュー [SYS\_QUERY\_TEXT](SYS_QUERY_TEXT.md) でも確認できます。SYS モニタリングビューのデータは、使いやすく理解しやすいようにフォーマットされます。クエリには、SYS モニタリングビューを使用することをお勧めします。

クエリテキストの長さが 4000 文字を超える場合、STL\_QUERYTEXT は切り捨てられたデータのみを表示することに注意してください。完全なクエリテキストを取得するには、複数の行にまたがるクエリテキストに UNION を使用できます。

## テーブルの列
<a name="r_STL_QUERYTEXT-table-columns"></a>


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

## サンプルクエリ
<a name="r_STL_QUERYTEXT-sample-queries"></a>

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)
```

### ストアド SQL の再構築
<a name="r_STL_QUERYTEXT-reconstruct-sql"></a>

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;
```