SET - Amazon Redshift

SET

Establece el valor de un parámetro de configuración de un servidor. Utilice el comando SET para invalidar un valor solo mientras dure la sesión o la transacción actual.

Utilice el comando RESET para devolver un parámetro a su valor predeterminado.

Puede cambiar los parámetros de configuración del servidor de varias maneras. Para obtener más información, consulte Modificación de la configuración del servidor.

Sintaxis

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

La siguiente instrucción establece el valor de una variable de contexto de sesión.

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

Parámetros

SESSION

Especifica que el ajuste es válido para la sesión actual. Valor predeterminado.

variable_name

Especifica el nombre del conjunto de variables de contexto de la sesión.

La convención de nomenclatura es un nombre de dos partes separado por un punto, por ejemplo identificador.identificador. Solo se permite un punto de separador. Utilice un identificador que sigue las reglas de identificador estándar de Amazon Redshift Para obtener más información, consulte Nombres e identificadores. No se permiten identificadores delimitados.

LOCAL

Especifica que el ajuste es válido para la transacción actual.

SEED TO value (valor)

Establece el uso de un inicio interno de la función RANDOM para la generación aleatoria de números.

SET SEED toma un valor numérico comprendido entre 0 y 1, y lo multiplica por (231-1) para utilizarlo con la función Función RANDOM. Si utiliza SET SEED antes de realizar varias ejecuciones RANDOM, RANDOM genera números en una secuencia predecible.

parameter_name

Nombre del parámetro que se debe establecer. Para obtener información acerca de los parámetros, consulte Modificación de la configuración del servidor.

value

Nuevo valor del parámetro. Utilice comillas simples para establecer el valor en una cadena específica. Si utiliza SET SEED, este parámetro contiene el valor SEED.

DEFAULT

Establece el parámetro al valor predeterminado.

Ejemplos

Cambio de un parámetro en la sesión actual

En el siguiente ejemplo, se establece el estilo de fecha:

set datestyle to 'SQL,DMY';

Establecimiento de un grupo de consultas para la administración de cargas de trabajo

Si los grupos de consultas están enumerados en la definición de una cola como parte de la configuración WLM del clúster, puede establecer el parámetro QUERY_GROUP con el nombre de un grupo de consultas enumerado. Las consultas posteriores se asignan a la cola de la consulta asociada. El ajuste QUERY_GROUP permanece en vigor durante la sesión o hasta que se aplica un comando RESET QUERY_GROUP.

Este ejemplo ejecuta dos consultas como parte de la "prioridad" del grupo de consultas y, luego, restablece el grupo de consultas.

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;

Para obtener más información, consulte Implementación de Workload Management.

Cambio del espacio de nombres de identidad predeterminado para la sesión

Un usuario de la base de datos puede establecer default_identity_namespace. En este ejemplo, se muestra cómo usar SET SESSION para invalidar la configuración durante la sesión actual y, a continuación, mostrar el nuevo valor del proveedor de identidades. Esto se utiliza con más frecuencia cuando utiliza un proveedor de identidades con Redshift e IAM Identity Center. Para obtener más información sobre cómo usar un proveedor de identidades con Redshift, consulte Conectar Redshift con IAM Identity Center para ofrecer a los usuarios una experiencia de inicio de sesión único.

SET SESSION default_identity_namespace = 'MYCO'; SHOW default_identity_namespace;

Tras ejecutar el comando, puede ejecutar una instrucción GRANT o CREATE como la siguiente:

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

En este caso, el efecto de establecer el espacio de nombres de identidad predeterminado equivale a anteponer cada identidad con el espacio de nombres. En este ejemplo, alice se sustituye por MYCO:alice. Para obtener más información acerca de los ajustes relacionados con la configuración de Redshift con IAM Identity Center, consulte ALTER SYSTEM y MODIFICAR PROVEEDOR DE IDENTIDADES.

Establecimiento de una etiqueta para un grupo de consultas

El parámetro QUERY_GROUP define una etiqueta para una o más consultas que se ejecutan en la misma sesión después de un comando SET. A su vez, se registra esta etiqueta cuando se ejecutan las consultas y se puede utilizar para limitar los resultados que devuelven las tablas de sistema STL_QUERY y STV_INFLIGHT, además de la vista 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)

Las etiquetas del grupo de consultas son un mecanismo útil para aislar consultas individuales o grupos de consultas que se ejecutan como parte de scripts. No es necesario identificar y rastrear las consultas por sus ID; puede rastrearlas por sus etiquetas.

Establecimiento de un valor de inicio para la generación aleatoria de números

En el siguiente ejemplo, se utiliza la opción SEED con SET para que la función RANDOM genere números en una secuencia predecible.

Primero, se devuelven tres valores enteros RANDOM sin establecer antes el valor 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)

Ahora, establezca el valor SEED en .25 y devuelva tres números RANDOM más:

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)

Finalmente, restablezca el valor SEED a .25 y verifique que RANDOM devuelva los mismos resultados que en las tres ejecuciones anteriores:

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)

En el siguiente ejemplo, se establece una variable de contexto personalizada.

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