Amazon Redshift
Manuel du développeur de base de données

SET

Définit la valeur d'un paramètre de configuration du serveur.

Utilisez la commande RESET pour rétablir un paramètre à sa valeur par défaut. Pour plus d'informations sur les paramètres, consultez Modification de la configuration du serveur.

Syntaxe

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

Paramètres

SESSION

Spécifie que le paramètre est valide pour la session en cours. Valeur par défaut.

LOCAL

Spécifie que le paramètre est valide pour la transaction en cours.

SEED TO valeur

Définit une valeur initiale interne à utiliser par la fonction RANDOM pour la génération de nombres aléatoires.

SET SEED accepte une valeur numérique comprise entre 0 et 1, et la multiplie par (231-1) en vue de son utilisation avec la fonction Fonction RANDOM. Si vous utilisez SET SEED avant d'effectuer plusieurs appels RANDOM, RANDOM génère les nombres selon une séquence prévisible.

nom_paramètre

Nom du paramètre à définir. Pour obtenir des informations sur les paramètres, consultez Modification de la configuration du serveur.

valeur

Nouvelle valeur de paramètre. Utilisez des guillemets simples pour définir la valeur d'une chaîne spécifique. Si vous utilisez SET SEED, ce paramètre contient la valeur SEED.

DEFAULT

Définit le paramètre à la valeur par défaut.

Exemples

Modification d'un paramètre pour la session en cours

L'exemple suivant définit datestyle :

set datestyle to 'SQL,DMY';

Définition d'un groupe de requêtes pour la gestion de la charge de travail

Si les groupes de requêtes sont répertoriés dans une définition de file d'attente dans le cadre de la configuration WLM du cluster, vous pouvez définir le paramètre QUERY_GROUP avec un nom de groupe de requêtes répertorié. Les requêtes suivantes sont affectées à la file d'attente des requêtes associée. Le paramètre QUERY_GROUP reste en vigueur pendant la durée de la session ou jusqu'à ce qu'une commande RESET_QUERY_GROUP soit rencontrée.

Cet exemple exécute deux requêtes dans le cadre du groupe de requêtes 'priority', puis réinitialise le groupe de requêtes.

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;

Voir Implémentation de la gestion de la charge de travail

Définition d'une étiquette pour un groupe de requêtes

Le paramètre QUERY_GROUP définit une étiquette pour une ou plusieurs requêtes exécutées dans la même session après une commande SET. A son tour, cette étiquette est enregistrée lorsque les requêtes sont exécutées et peuvent être utilisées pour limiter les résultats renvoyés par les tables système STL_QUERY et STV_INFLIGHT et la vue 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)

Les étiquettes de groupe de requêtes sont un mécanisme utile pour isoler les requêtes ou groupes de requêtes exécutés dans le cadre de scripts. Vous n'avez pas besoin d'identifier et de suivre les requêtes par leur ID ; vous pouvez les suivre d'après leurs étiquettes.

Définition d'une valeur de départ pour la génération de nombres aléatoires

L'exemple suivant utilise SET avec l'option SEED pour que la fonction RANDOM génère des nombres selon une séquence prévisible.

D'abord, renvoyez trois entiers RANDOM sans définir au préalable la valeur SEED :

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)

A présent, définissez la valeur SEED sur .25 et renvoyez trois nombres RANDOM supplémentaires :

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)

Enfin, réinitialisez la valeur SEED sur .25 et vérifiez que RANDOM renvoie les mêmes résultats que les trois appels précédents :

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)

Sur cette page :