SET
サーバー設定パラメータの値を設定します。SET コマンドを使用して、現在のセッションまたはトランザクションのみの期間の設定をオーバーライドします。
RESET コマンドを使って、パラメータをデフォルト値に戻します。
サーバー構成パラメータは、いくつかの方法で変更できます。詳細については、「サーバー設定の変更」を参照してください。
構文
SET { [ SESSION | LOCAL ] { SEED | parameter_name } { TO | = } { value | 'value' | DEFAULT } | SEED TO value }
次のステートメントは、セッションコンテキスト変数の値を設定します。
SET { [ SESSION | LOCAL ] variable_name { TO | = } { value | 'value' }
パラメータ
- SESSION
-
現在のセッションに対して、設定が有効であることを指定します。デフォルト値
- variable_name
-
セッションに設定されたコンテキスト変数の名前を指定します。
命名規則は、ドットで区切られた 2 つの部分で構成される名前です (例: identifier.identifier)。使用できるドット区切り文字は 1 つだけです。Amazon Redshift の標準識別子ルールに従った識別子を使用します。詳細については、「名前と識別子」を参照してください。区切り文字は許可されていません。
- LOCAL
-
設定が現在の取引で有効なことを指定します。
- SEED TO value
-
乱数生成用に RANDOM 関数が使用する内部シードを設定します。
SET SEED は、0 から 1 までの数値を取り、この数値に (231-1) を掛けて、RANDOM 関数関数で使用します。複数の RANDOM コールの前に SET SEED を使用すると、RANDOM は予想可能な順番で番号を生成します。
- parameter_name
-
設定するパラメータの名前。パラメータの詳細については、「サーバー設定の変更」を参照してください。
- value
-
新しいパラメータ値。一重引用符を使って、指定文字列に値を設定します。SET SEED を使用した場合、このパラメータには SEED 値が含まれます。
- DEFAULT
-
パラメータをデフォルト値に設定します。
例
現在のセッションのパラメータの変更
次の例は、データスタイルを設定します。
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;
詳細については、「ワークロード管理」を参照してください。
セッションのデフォルトの ID 名前空間を変更する
データベースユーザーは default_identity_namespace
を設定できます。このサンプルでは、SET SESSION
を使用して現在のセッション期間中に設定を上書きし、新しい ID プロバイダーの値を表示する方法を示します。これは、Redshift と IAM アイデンティティセンターで ID プロバイダーを使用している場合に最もよく使用されます。Redshift で ID プロバイダーを使用する方法の詳細については、「Redshift を IAM アイデンティティセンターに接続してユーザーにシングルサインオンエクスペリエンスを提供する」を参照してください。
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」および「他の ID プロバイダー」を参照してください。
クエリのグループのラベルの設定
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';