

 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\_QUERY
<a name="r_STL_QUERY"></a>

データベースクエリに関する実行情報を返します。

**注記**  
STL\_QUERY および STL\_QUERYTEXT ビューには、クエリに関する情報だけが含まれており、他のユーティリティや DDL コマンドは含まれていません。Amazon Redshift によって実行されるすべてのステートメントのリストと情報については、STL\_DDLTEXT および STL\_UTILITYTEXT ビューもクエリできます。Amazon Redshift によって実行されるすべてのステートメントの完全なリストについては、SVL\_STATEMENTTEXT ビューをクエリできます。

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

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

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

**注記**  
実行されたクエリを含むトランザクションが正常にコミットされたかどうかを確認するには、システムテーブルと `sys_transaction_history` テーブル間の JOIN オペレーションを実行する必要があります。例えば、次のようになります。  

```
SELECT 
    stlq.xid AS transaction_id,
    stlq.query AS query_id,
    TRIM(stlq.querytxt) AS query_text,
    th.status AS transaction_status
FROM 
    stl_query stlq
LEFT JOIN 
    sys_transaction_history th ON stlq.xid = th.transaction_id;
```

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


| 列名  | データ型  | 説明  | 
| --- | --- | --- | 
| userid | integer | エントリを生成したユーザーの ID。 | 
| query  | integer | クエリ ID。クエリ列は、他の各種システムテーブルおよびビューを結合するために使用できます。 | 
| label  | character(320)  | クエリを実行するために使用される名前、または SET QUERY\_GROUP コマンドによって定義されるラベル。クエリがファイルベースでないか、QUERY\_GROUP パラメータが設定されていない場合、このフィールドの値は default になります。 | 
| xid  | bigint  | トランザクション ID。 | 
| pid  | integer  | プロセス ID。通常、セッション内のすべてのクエリは同一プロセスで実行されるため、一連のクエリを同一セッションで実行した場合、通常、この値は一定です。Amazon Redshift は特定の内部イベントに続いてアクティブなセッションを再起動し、新しい PID を割り当てる場合があります。詳細については、「[STL\_RESTARTED\_SESSIONS](r_STL_RESTARTED_SESSIONS.md)」を参照してください。 | 
| database | character(32) | クエリが発行されたときにユーザーが接続されたデータベースの名前。 | 
| querytxt  | character(4000)  | クエリの実際のクエリテキスト。 | 
| starttime | timestamp | UTC で表されたクエリの開始時間。合計時間にはキューイングと実行が含まれます。秒の小数部は 6 桁の精度で表されます。例: 2009-06-12 11:29:19.131358。 | 
| endtime | timestamp | クエリの実行が完了した時刻 (UTC)。合計時間にはキューイングと実行が含まれます。秒の小数部は 6 桁の精度で表されます。例: 2009-06-12 11:29:19.131358。 | 
| aborted  | integer  | クエリがシステムによって停止されたかユーザーによってキャンセルされた場合、この列は 1 になります。クエリが (クライアントに結果を返すことも含めて) 最後まで実行された場合、この列は 0 になります。クライアントが結果を受け取る前に接続を解除した場合、クエリはバックエンドで正常に完了した場合でも、キャンセルされたものとしてマーク (1) されます。 | 
| insert\_pristine  | integer  |  現在のクエリの実行中に書き込みクエリが実行可能であるかどうか。1 = 書き込みクエリが許可されていません。0 = 書き込みクエリが許可されています。この列は、デバッグで使用することが意図されています。 | 
| concurrency\_scaling\_status | integer  | クエリがメインクラスター、または同時実行スケーリングクラスターのどちらで実行されたかを示します。指定できる値は次のとおりです。<br />0 - メインクラスターで実行 <br />1 - 同時実行スケーリングクラスターで実行 <br />1 より大きい - メインクラスターで実行  | 

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

次のクエリは、最近実行された 5 つのクエリを表示します。

```
select query, trim(querytxt) as sqlquery
from stl_query
order by query desc limit 5;

query |                                   sqlquery
------+--------------------------------------------------
129 | select query, trim(querytxt) from stl_query order by query;
128 | select node from stv_disk_read_speeds;
127 | select system_status from stv_gui_status
126 | select * from systable_topology order by slice
125 | load global dict registry
(5 rows)
```

次のクエリは、2013 年 2 月 15 日に実行されたクエリを所要時間の降順で返します。

```
select query, datediff(seconds, starttime, endtime),
trim(querytxt) as sqlquery
from stl_query
where starttime >= '2013-02-15 00:00' and endtime < '2013-02-16 00:00'
order by date_diff desc;

 query | date_diff |  sqlquery
-------+-----------+-------------------------------------------
 55    |       119 | padb_fetch_sample: select count(*) from category
121    |         9 | select * from svl_query_summary;
181    |         6 | select * from svl_query_summary where query in(179,178);
172    |         5 | select * from svl_query_summary where query=148;
...
(189 rows)
```

以下のクエリは、クエリのキュー時間および実行時間を表示します。`concurrency_scaling_status = 1` を使用したクエリは、同時実行スケーリングクラスターで実行されました。他のすべてのクエリは、メインクラスターで実行されました。

```
SELECT w.service_class AS queue
     , q.concurrency_scaling_status
     , COUNT( * ) AS queries
     , SUM( q.aborted )  AS aborted
     , SUM( ROUND( total_queue_time::NUMERIC / 1000000,2 ) ) AS queue_secs
     , SUM( ROUND( total_exec_time::NUMERIC / 1000000,2 ) )  AS exec_secs
FROM stl_query q
     JOIN stl_wlm_query w
          USING (userid,query)
WHERE q.userid > 1
  AND service_class > 5
  AND q.starttime > '2019-03-01 16:38:00'
  AND q.endtime   < '2019-03-01 17:40:00'
GROUP BY 1,2
ORDER BY 1,2;
```