SET - Amazon Redshift

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

SET

Définit la valeur d’un paramètre de configuration du serveur. Utilisez la commande SET pour remplacer un paramètre pendant la durée de la séance ou de la transaction actuelle uniquement.

Utilisez la commande RESET pour rétablir un paramètre à sa valeur par défaut.

Vous pouvez modifier les paramètres de configuration du serveur de plusieurs manières. Pour plus d'informations, consultez Modification de la configuration du serveur.

Syntaxe

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

L’instruction suivante définit la valeur d’une variable de contexte de session.

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

Paramètres

SESSION

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

variable_name

Spécifie le nom de la variable contextuelle définie pour la session.

La convention de nommage est un nom en deux parties séparées par un point, par exemple identifier.identifier (identifiant.identifiant). Un seul séparateur de points est autorisé. Utilisez un identifiant qui respecte les règles d’identification standard pour Amazon Redshift. Pour obtenir plus d’informations à ce sujet, consultez Noms et identificateurs. Les identifiants délimités ne sont pas autorisés.

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. Consultez Modification de la configuration du serveur pour obtenir des informations sur les paramètres.

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 séance 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 séance 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;

Consultez 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 séance après une commande SET. À 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)

L’exemple suivant définit une variable contextuelle personnalisée.

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