

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

# SET
<a name="r_SET"></a>

サーバー設定パラメータの値を設定します。SET コマンドを使用して、現在のセッションまたはトランザクションのみの期間の設定をオーバーライドします。

[RESET](r_RESET.md) コマンドを使って、パラメータをデフォルト値に戻します。

サーバー構成パラメータは、いくつかの方法で変更できます。詳細については、「[サーバー設定の変更](cm_chap_ConfigurationRef.md#t_Modifying_the_default_settings)」を参照してください。

## 構文
<a name="r_SET-synopsis"></a>

```
SET { [ SESSION | LOCAL ]
{ SEED | parameter_name } { TO | = }
{ value | 'value' | DEFAULT } |
SEED TO value }
```

次のステートメントは、セッションコンテキスト変数の値を設定します。

```
SET { [ SESSION | LOCAL ]
variable_name { TO | = }
{ value | 'value'  }
```

## パラメータ
<a name="r_SET-parameters"></a>

SESSION   
現在のセッションに対して、設定が有効であることを指定します。デフォルト値

*variable\_name*   
セッションに設定されたコンテキスト変数の名前を指定します。  
命名規則は、ドットで区切られた 2 つの部分で構成される名前です (例: *identifier.identifier*)。使用できるドット区切り文字は 1 つだけです。Amazon Redshift の標準識別子ルールに従った*識別子*を使用します。詳細については、「[名前と識別子](r_names.md)」を参照してください。区切り文字は許可されていません。

LOCAL   
設定が現在の取引で有効なことを指定します。

SEED TO *value*   
乱数生成用に RANDOM 関数が使用する内部シードを設定します。  
SET SEED は、0 から 1 までの数*値*を取り、この数値に (231-1) を掛けて、[RANDOM 関数](r_RANDOM.md)関数で使用します。複数の RANDOM コールの前に SET SEED を使用すると、RANDOM は予想可能な順番で番号を生成します。

 *parameter\_name*   
設定するパラメータの名前。パラメータの詳細については、「[サーバー設定の変更](cm_chap_ConfigurationRef.md#t_Modifying_the_default_settings)」を参照してください。

 *値*   
新しいパラメータ値。一重引用符を使って、指定文字列に値を設定します。SET SEED を使用した場合、このパラメータには SEED 値が含まれます。

DEFAULT   
パラメータをデフォルト値に設定します。

## 例
<a name="r_SET-examples"></a>

 **現在のセッションのパラメータの変更** 

次の例は、データスタイルを設定します。

```
set datestyle to 'SQL,DMY';
```

 **ワークロード管理用のクエリグループの設定** 

クラスターの WLM 設定の一部として、クエリグループをキュー定義で一覧表示した場合、一覧表示されたクエリクループ名に QUERY\_GROUP パラメータを設定できます。以降のクエリは、関連するクエリキューに割り当てられます。QUERY\_GROUP グループの設定は、セッションの有効期間中、または RESET QUERY\_GROUP コマンドの遭遇するまで有効です。

この例では、クエリグループ「priority」の一部として 2 つのクエリを実行し、その後クエリグループをリセットします。

```
set query_group to 'priority';
select tbl, count(*)from stv_blocklist;
select query, elapsed, substring from svl_qlog order by query desc limit 5;
reset query_group;
```

詳細については、「[ワークロード管理](cm-c-implementing-workload-management.md)」を参照してください。

 **セッションのデフォルトの ID 名前空間を変更する** 

データベースユーザーは `default_identity_namespace` を設定できます。このサンプルでは、`SET SESSION` を使用して現在のセッション期間中に設定を上書きし、新しい ID プロバイダーの値を表示する方法を示します。これは、Redshift と IAM アイデンティティセンターで ID プロバイダーを使用している場合に最もよく使用されます。Redshift で ID プロバイダーを使用する方法の詳細については、「[Redshift を IAM アイデンティティセンターに接続してユーザーにシングルサインオンエクスペリエンスを提供する](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-access-control-idp-connect.html)」を参照してください。

```
SET SESSION default_identity_namespace = 'MYCO';
         
SHOW default_identity_namespace;
```

コマンドを実行したら、次のような GRANT ステートメントまたは CREATE ステートメントを実行できます。

```
GRANT SELECT ON TABLE mytable TO alice;

GRANT UPDATE ON TABLE mytable TO salesrole;
         
CREATE USER bob password 'md50c983d1a624280812631c5389e60d48c';
```

この場合、デフォルトの ID 名前空間を設定する効果は、各 ID に名前空間のプレフィックスを付けることと同じです。この例では、`alice` が `MYCO:alice` に置き換えられます。IAM アイデンティティセンターでの Redshift 構成に関連する設定の詳細については、「[ALTER SYSTEM](r_ALTER_SYSTEM.md)」および「[他の ID プロバイダー](r_ALTER_IDENTITY_PROVIDER.md)」を参照してください。

 **クエリのグループのラベルの設定** 

QUERY\_GROUP パラメータは、SET コマンド実行後の同じセッションで実行される 1 つまたは複数のクエリのためのラベルを定義します。また、実行されたクエリが STL\_QUERY や STV\_INFLIGHT システムテーブル、および SVL\_QLOG ビューから返される結果を制約する場合に、このラベルがログ記録されます。

```
show query_group;
query_group
-------------
unset
(1 row)

set query_group to '6 p.m.';


show query_group;
query_group
-------------
6 p.m.
(1 row)

select * from sales where salesid=500;
salesid | listid | sellerid | buyerid | eventid | dateid | ...
---------+--------+----------+---------+---------+--------+-----
500 |    504 |     3858 |    2123 |    5871 |   2052 | ...
(1 row)

reset query_group;

select query, trim(label) querygroup, pid, trim(querytxt) sql
from stl_query
where label ='6 p.m.';
query | querygroup |  pid  |                  sql
-------+------------+-------+----------------------------------------
57 | 6 p.m.     | 30711 | select * from sales where salesid=500;
(1 row)
```

クエリグループのラベルは、スクリプトの一部として実行された個々のクエリやクエリグループを分離するための有益なメカニズムです。クエリの ID によってクエリの識別や追跡を行う必要はありません。ラベルによってクエリの追跡が可能です。

 **乱数生成用のシード値の設定** 

次の例では、SET コマンドで SEED オプションを使用し、RANDOM 関数により、予想可能な順番で数値を生成します。

まず、SEED 値を最初に設定せずに、3 つの整数の乱数を返します。

```
select cast (random() * 100 as int);
int4
------
6
(1 row)

select cast (random() * 100 as int);
int4
------
68
(1 row)

select cast (random() * 100 as int);
int4
------
56
(1 row)
```

次に、SEED 値を `.25` に設定して、さらに 3 つの整数の乱数を返します。

```
set seed to .25;

select cast (random() * 100 as int);
int4
------
21
(1 row)

select cast (random() * 100 as int);
int4
------
79
(1 row)

select cast (random() * 100 as int);
int4
------
12
(1 row)
```

最後に、SEED 値を `.25` にリセットして、RANDOM が前の 3 つの呼び出しと同じ結果を返すことを確認します。

```
set seed to .25;

select cast (random() * 100 as int);
int4
------
21
(1 row)

select cast (random() * 100 as int);
int4
------
79
(1 row)

select cast (random() * 100 as int);
int4
------
12
(1 row)
```

次の例では、カスタマイズされたコンテキスト変数を設定します。

```
SET app_context.user_id TO 123;
SET app_context.user_id TO 'sample_variable_value';
```