

 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/)を参照してください。

# Amazon Redshift RSQL 変数
<a name="rsql-query-tool-variables"></a>

 キーワードには、RSQL の変数として機能するものがあります。それぞれを特定の値に設定するか、値を再設定することができます。ほとんどは `\rset` で設定されており、これにはインタラクティブモードとバッチモードがあります。コマンドは、小文字または大文字で定義できます。

## ACTIVITYCOUNT
<a name="rsql-query-tool-activitycount"></a>

 最後に送信されたリクエストの影響を受けた行の数を示します。データ返すリクエストの場合、これはデータベースから RSQL に返された行の数です。この値は 0 または正の整数です。最大値は 18,446,744,073,709,551,615 です。

 特別に処理された変数 `ACTIVITYCOUNT` は変数 `ROW_COUNT` に似ています。ただし、`ROW_COUNT`はコマンド完了時に `SELECT`、`COPY`、または `UNLOAD` について影響を受けた行の数をクライアントアプリケーションに報告しませんが、`ACTIVITYCOUNT` は報告します。

activitycount\$101.sql:

```
select viewname, schemaname
from pg_views
where schemaname = 'not_existing_schema';
\if :ACTIVITYCOUNT = 0
\remark 'views do not exist'
\endif
```

コンソール出力:

```
viewname | schemaname
----------+------------
(0 rows)

views do not exist
```

## ERRORLEVEL
<a name="rsql-query-tool-describe-rset-errorlevel"></a>

エラーに重要度レベルを割り当てます。この重大度を使用して、アクションの方針を決定します。`ERRORLEVEL` コマンドが使用されていない場合、その値はデフォルトで `ON` になります。

errorlevel\$101.sql:

```
\rset errorlevel 42P01 severity 0

select * from tbl;

select 1 as col;

\echo exit
\quit
```

コンソール出力:

```
Errorlevel is on.
rsql: ERROR: relation "tbl" does not exist
(1 row)

col
1

exit
```

## HEADING および RTITLE
<a name="rsql-query-tool-describe-rset-heading-rtitle"></a>

ユーザーがレポートの上部に表示されるヘッダーを指定できるようにします。`RSET RTITLE` コマンドによって指定されたヘッダーには、クライアントコンピュータの現在のシステム日付が自動的に含められます。

rset\$1heading\$1rtitle\$102.rsql の内容:

```
\remark Starting...
\rset rtitle "Marketing Department||Confidential//Third Quarter//Chicago"
\rset width 70
\rset rformat on
select * from rsql_test.tbl_currency order by id limit 2;
\exit
\remark Finishing...
```

コンソール出力:

```
Starting...
Rtitle is set to: &DATE||Marketing Department||Confidential//Third Quarter//Chicago (Changes will take effect after RFORMAT is
switched ON)
Target width is 70.
Rformat is on.
09/11/20       Marketing       Department Confidential
                  Third Quarter
                     Chicago
id  | bankid  | name |      start_date
100 |       1 | USD | 2020-09-11 10:51:39.106905
110 |       1 | EUR | 2020-09-11 10:51:39.106905
(2 rows)

Press any key to continue . . .
```

## MAXERROR
<a name="rsql-query-tool-describe-rset-maxerror"></a>

最大エラー重大度レベルを指定します。このレベルを超えると、RSQL がジョブ処理を終了します。リターンコードは、RSQL が各ジョブまたはタスクの完了後にクライアントオペレーティングシステムに返す整数値です。リターンコードの値は、ジョブまたはタスクの完了ステータスを示します。指定された `maxerror` 値を超えるエラー重大度レベルを生成するステートメントがスクリプトに含まれている場合、RSQL はただちに終了します。従って、エラー重大度レベル 8 で RSQL を終了させるには、`RSET MAXERROR 7`を使用します。

maxerror\$101.sql の内容:

```
\rset maxerror 0
                        
select 1 as col;

\quit
```

コンソール出力:

```
Maxerror is default.
(1 row)

col
1
```

## RFORMAT
<a name="rsql-query-tool-describe-rset-heading-rformat"></a>

ユーザーがフォーマットコマンドの設定を適用するかどうかを指定できるようにします。

rset\$1rformat.rsql の内容:

```
\remark Starting...
\pset border 2
\pset format wrapped
\pset expanded on
\pset title 'Great Title'
select * from rsql_test.tbl_long where id = 500;
\rset rformat
select * from rsql_test.tbl_long where id = 500;
\rset rformat off
select * from rsql_test.tbl_long where id = 500;
\rset rformat on
select * from rsql_test.tbl_long where id = 500;
\exit
\remark Finishing...
```

コンソール出力:

```
Starting...
Border style is 2. (Changes will take effect after RFORMAT is switched ON)
Output format is wrapped. (Changes will take effect after RFORMAT is switched ON)
Expanded display is on. (Changes will take effect after RFORMAT is switched ON)
Title is "Great Title". (Changes will take effect after RFORMAT is switched ON)
id  |                                                             long_string
500 | In general, the higher the number the more borders and lines the tables will have, but details depend on the particular
format.
(1 row)

Rformat is on.
Great Title
+-[ RECORD 1 ]+----------------------------------------------------------------------------------------------------------------------
-----------+
| id           | 500
|
| long_string | In general, the higher the number the more borders and lines the tables will have, but details depend on the
particular format. |
+-------------+----------------------------------------------------------------------------------------------------------------------
-----------+

Rformat is off.
id  |                                                             long_string
500 | In general, the higher the number the more borders and lines the tables will have, but details depend on the particular format.
(1 row)

Rformat is on.
Great Title
+-[ RECORD 1 ]+----------------------------------------------------------------------------------------------------------------------
-----------+
| id           | 500
|
| long_string | In general, the higher the number the more borders and lines the tables will have, but details depend on the
particular format. |
+-------------+----------------------------------------------------------------------------------------------------------------------
-----------+
Press any key to continue . . .
```

## ROW\$1COUNT
<a name="rsql-query-tool-describe-rset-row_count"></a>

前回のクエリの影響を受けたレコードの数を取得します。以下のコードフラグメントにあるように、これは結果をチェックするために使用されるのが一般的です。

```
SET result = ROW_COUNT;

IF result = 0
...
```

## TITLEDASHES
<a name="rsql-query-tool-describe-rset-heading-titledashes"></a>

このコントロールは、ユーザーが SQL ステートメントに返される列データの上にダッシュ文字のラインを出力するかどうかを指定できるようにします。

例:

```
\rset titledashes on
select dept_no, emp_no, salary from rsql_test.EMPLOYEE
where dept_no = 100;
\rset titledashes off
select dept_no, emp_no, salary from rsql_test.EMPLOYEE
where dept_no = 100;
```

コンソール出力:

```
dept_no      emp_no          salary
----------- ----------- --------------------
100         1000346        1300.00
100         1000245        5000.00
100         1000262        2450.00

dept_no     emp_no         salary
100         1000346        1300.00
100         1000245        5000.00
100         1000262        2450.00
```

## WIDTH
<a name="rsql-query-tool-describe-rset-heading-width"></a>

出力形式を折り返しに設定し、レポート内の各行のターゲット幅を指定します。パラメータを指定しない場合は、形式とターゲット幅両方の現在の設定を返します。

rset\$1width\$101.rsql の内容:

```
\echo Starting...
\rset width
\rset width 50
\rset width
\quit
\echo Finishing...
```

コンソール出力:

```
Starting...
Target width is 75.
Target width is 50.
Target width is 50.
Press any key to continue . . .
```

パラメータ指定時の例:

```
\echo Starting...
\rset rformat on
\pset format wrapped
select * from rsql_test.tbl_long where id = 500;
\rset width 50
select * from rsql_test.tbl_long where id = 500;
\quit
\echo Finishing...
```

コンソール出力:

```
Starting...
Rformat is on.
Output format is wrapped.
id  |                                          long_string
500 | In general, the higher the number the more borders and lines the ta.
    |.bles will have, but details depend on the particular format.
(1 row)

Target width is 50.
id  |                                          long_string
500 | In general, the higher the number the more.
    |. borders and lines the tables will have, b.
    |.ut details depend on the particular format.
    |..
(1 row)
Press any key to continue . . .
```