SET - Amazon Redshift

SET

Define o valor de um parâmetro de configuração de servidor. Use o comando SET para substituir uma configuração para a duração da sessão ou transação atual somente.

Usa o comando RESET para que um parâmetro volte ao seu valor padrão.

É possível alterar os parâmetros de configuração do servidor de várias maneiras. Para obter mais informações, consulte Modificar a configuração do servidor.

Sintaxe

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

A instrução a seguir define o valor de uma variável de contexto de sessão.

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

Parâmetros

SESSION

Especifica que a configuração é válida para a sessão atual. Valor padrão.

variable_name

Especifica o nome da variável de contexto definida para a sessão.

A convenção de nomenclatura é um nome de duas partes separado por um ponto; por exemplo identificador.identificador. Só é permitido um separador de ponto. Use um identificador que siga as regras de identificador padrão do Amazon Redshift. Para obter mais informações, consulte Nomes e identificadores. Não são permitidos identificadores delimitados.

LOCAL

Especifica que a configuração é válida para a transação atual.

SEED TO valor

Define uma propagação interna a ser usada pela função RANDOM para a geração de números aleatórios.

SET SEED escolhe um valor numérico entre 0 e 1 e multiplica esse número por (231-1) para uso com a função Função RANDOM. Se você usar SET SEED antes de fazer diversas chamadas RANDOM, RANDOM gerará números em uma sequência previsível.

parameter_name

Nome do parâmetro a ser definido. Consulte Modificar a configuração do servidor para obter informações sobre parâmetros.

value

Novo valor do parâmetro. Use aspas simples para definir o valor de uma string específica. Se estiver usando SET SEED, esse parâmetro contém o valor SEED.

DEFAULT

Define o parâmetro para o valor padrão.

Exemplos

Alterar um parâmetro para a sessão atual

O exemplo a seguir define datestyle:

set datestyle to 'SQL,DMY';

Configurar um grupo de consultas para gerenciamento de workload

Se grupos de consulta estiverem listados em uma definição de fila como parte da configuração de WLM do cluster, configure o parâmetro QUERY_GROUP para um nome de grupo de consultas listado. Consultas subsequentes são atribuídas à fila de consultas associada. A configuração de QUERY_GROUP permanece em vigor pela duração da sessão ou até que o comando RESET QUERY_GROUP seja encontrado.

Este exemplo executa duas consultas como parte de 'priority' do grupo de consultas e, depois, redefine o 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 ter mais informações, consulte Gerenciamento do workload.

Alterar o namespace de identidade padrão para a sessão

Um usuário do banco de dados pode definir default_identity_namespace. Este exemplo mostra como usar SET SESSION para substituir a configuração durante a sessão atual e, depois, mostrar o novo valor do provedor de identidades. Isso é usado com maior frequência quando você utiliza um provedor de identidades com o Redshift e o Centro de Identidade do IAM. Para ter mais informações sobre como usar um provedor de identidades com o Redshift, consulte Conectar o Redshift ao IAM Identity Center para proporcionar aos usuários uma experiência de logon único.

SET SESSION default_identity_namespace = 'MYCO'; SHOW default_identity_namespace;

Após a execução do comando, é possível executar uma declaração GRANT ou CREATE como a seguinte:

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

Nesse caso, o efeito de definir o namespace de identidade padrão é equivalente a prefixar cada identidade com o namespace. Neste exemplo, alice é substituído por MYCO:alice. Para ter mais informações sobre definições relativas à configuração do Centro de Identidade do IAM, consulte ALTER SYSTEM e ALTER IDENTITY PROVIDER.

Configurar uma identificação para um grupo de consultas

O parâmetro QUERY_GROUP define um rótulo para uma ou mais consultas que são executadas na mesma sessão após um comando SET. Por sua vez, esse rótulo é registrado quando as consultas são executadas e pode ser usado para restringir os resultados retornados das tabelas de sistema STL_QUERY e STV_INFLIGHT e da visualização 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)

As identificações de grupo de consulta são um mecanismo útil para isolar consultas individuais ou grupos de consultas executadas como parte de scripts. Você não precisa identificar e monitorar consultas pelos IDs; você pode acompanhá-las por suas identificações.

Configurar um valor de seed para a geração de números aleatórios

O exemplo a seguir usa a opção SEED com SET para que a função RANDOM gere números em uma sequência previsível.

Primeiro, retorne três inteiros RANDOM sem definir o valor de SEED primeiro:

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)

Agora, defina o valor de SEED como .25 e retorne mais três números RANDOM:

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)

Por fim, redefina o valor de SEED como .25 e verifique se RANDOM retorna os mesmos resultados que as três chamadas 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)

O exemplo a seguir define uma variável de contexto personalizada.

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