SnowConvert AI - Redshift - Instruções SQL¶
Referência de tradução para todas as instruções suportadas por SnowConvert AI para RedShift.
CALL¶
Descrição¶
Executa um procedimento armazenado. O comando CALL deve incluir o nome do procedimento e os valores dos argumentos de entrada. Você deve chamar um procedimento armazenado usando a instrução CALL. (CALL de referência da linguagem Redshift SQL).
Sintaxe da gramática¶
Amostra de padrões da origem¶
Cenário básico¶
Código de entrada:¶
Redshift¶
Código de saída:¶
Redshift¶
Chamada usando o modo de parâmetros de saída (INOUT, OUT)¶
Código de entrada:¶
Redshift¶
Código de saída:¶
Redshift¶
Problemas conhecidos¶
Os parâmetros de saída de chamadas fora dos procedimentos não funcionarão.
CREATE DATABASE¶
Sintaxe da gramática¶
Para obter mais informações, consulte a documentação de CREATE DATABASE do Redshift.
Amostra de padrões da origem¶
Amostras básicas¶
Código de entrada:¶
Redshift¶
Código de saída:¶
Snowflake¶
Cláusula de agrupamento¶
Código de entrada:¶
Redshift¶
Código de saída:¶
Snowflake¶
Cláusula de limite de conexão¶
Código de entrada:¶
Redshift¶
Código de saída:¶
Snowflake¶
Aviso
The connection limit clause is removed since the connection concurrency in Snowflake is managed by warehouse. For more information, see the Snowflake MAX_CONCURRENCY_LEVEL parameter.
Cláusula From ARN¶
Código de entrada:¶
Redshift¶
Código de saída:¶
Snowflake¶
Aviso
Essa cláusula foi removida porque é usada para fazer referência a recursos da Amazon, o que não é válido no Snowflake.
Cláusula Owner¶
Código de entrada¶
Redshift¶
Código de saída¶
Snowflake¶
Aviso
Observe que, nesse caso, a cláusula owner é removida do código, pois os bancos de dados do Snowflake são de propriedade de funções, não de usuários individuais. Para obter mais informações, consulte a documentação do Snowflake GRANT OWNERSHIP.
Cláusula Isolation Level¶
Código de entrada¶
Redshift¶
Código de saída¶
Snowflake¶
Nota
A transformação para Isolation Level está planejada para ser entregue no futuro.
EWIs relacionados¶
SSC-EWI-0073: Revisão de equivalência funcional pendente
CREATE EXTERNAL TABLE¶
Descrição ¶
Atualmente, o SnowConvert AI está transformando CREATE EXTERNAL TABLES em tabelas regulares; isso implica um esforço adicional porque os dados armazenados em tabelas RedShift externas devem ser transferidos para o banco de dados Snowflake.
Sintaxe da gramática ¶
See the Redshift CREATE EXTERNAL TABLE specification for this syntax.
Amostra de padrões da origem¶
Código de entrada:¶
Redshift¶
Código de saída:¶
Snowflake¶
Create External Table AS¶
Código de entrada:¶
Redshift¶
Código de saída:¶
Snowflake¶
Recomendações¶
Para saber como usar Create External Table no Snowflake, você pode consultar a documentação do Snowflake
EWIs relacionados¶
SSC-FDM-0004: Tabela externa convertida para tabela regular
CREATE MATERIALIZED VIEW¶
Descrição¶
No SnowConvert AI, as exibições materializadas RedShift são transformadas em tabelas dinâmicas do Snowflake. Para configurar corretamente as tabelas dinâmicas, dois parâmetros essenciais devem ser definidos: TARGET_LAG e WAREHOUSE. Se esses parâmetros não forem especificados nas opções de configuração, o SnowConvert AI usará os valores pré-atribuídos por padrão durante a conversão, conforme demonstrado no exemplo abaixo.
For more information, see the Redshift CREATE MATERIALIZED VIEW documentation.
For details on the necessary parameters, see the Snowflake CREATE DYNAMIC TABLE documentation.
Sintaxe da gramática¶
The following is the SQL syntax to create a view in Amazon Redshift. See the Redshift CREATE MATERIALIZED VIEW specification for this syntax.
Amostra de padrões da origem¶
Código de entrada:¶
Redshift¶
Código de saída:¶
Snowflake¶
Nota
Para obter a documentação dos atributos da tabela, você pode consultar a seguinte documentação:
Aviso
As cláusulas BACKUP e AUTO REFRESH foram excluídas porque não são aplicáveis em uma tabela dinâmica do Snowflake
Ewis relacionados¶
SSC-FDM-0031: Parâmetros necessários da tabela dinâmica definidos por padrão
CREATE SCHEMA¶
Sintaxe da gramática¶
Para obter mais informações, consulte a documentação de Redshift CREATE SCHEMA.
Amostra de padrões da origem¶
Amostras básicas¶
Código de entrada:¶
Redshift¶
Código de saída:¶
Snowflake¶
Cláusula Quota¶
Código de entrada:¶
Redshift¶
Código de saída:¶
Snowflake¶
Nota
No Snowflake, não é permitido definir uma cota por esquema. O gerenciamento de armazenamento é feito no nível da conta e do depósito, e o Snowflake lida com isso automaticamente. Por esse motivo, ele foi removido do código.
EWIs relacionados¶
Não há problemas conhecidos.
CREATE FUNCTION¶
Descrição¶
Este comando define uma função definida pelo usuário (UDF) no banco de dados. Essas funções encapsulam lógica reutilizável que pode ser invocada dentro de consultas SQL.
Sintaxe da gramática¶
The following is the SQL syntax to create a view in Amazon Redshift. See the Redshift CREATE VIEW specification for this syntax.
Linguagem SQL¶
Categoria de volatilidade¶
In Snowflake, VOLATILE and IMMUTABLE function volatility are functionally equivalent. Given that STABLE is inherently transformed to the default VOLATILE behavior, explicit use of STABLE will be deleted.
Código de entrada:¶
Redshift¶
Código de saída:¶
Snowflake¶
Linguagem Python¶
Dentro do escopo do SnowConvert AI, a linguagem Python para instruções CREATE FUNCTION não é compatível. Consequentemente, a linguagem plpythonu será sinalizada com um EWI (SSC-EWI-0073), e seu corpo poderia aparecer com erros de análise.
Código de entrada:¶
Redshift¶
Código de saída:¶
Snowflake¶
EWIs relacionados¶
Não há problemas conhecidos.
CREATE VIEW¶
Descrição¶
Esse comando cria uma visualização em um banco de dados, que é executada sempre que a visualização é referenciada em uma consulta. Usando a cláusula WITH NO SCHEMA BINDING, você pode criar exibições para uma tabela externa ou objetos que ainda não existem. Essa cláusula, no entanto, exige que você especifique o nome qualificado do objeto ou da tabela a que está fazendo referência.
Sintaxe da gramática¶
The following is the SQL syntax to create a view in Amazon Redshift. See the Redshift CREATE VIEW specification for this syntax.
Amostra de padrões da origem¶
Considerando as cláusulas obrigatórias e opcionais no comando do Redshift, o resultado após a migração para o Snowflake é muito semelhante.
Código de entrada:¶
Redshift¶
Código de saída:¶
Snowflake¶
Há algumas exceções, no entanto, de uma cláusula sem suporte do Redshift, portanto, um EWI foi implementado para cobrir esse caso.
EWIs relacionados¶
SSC-EWI-RS0003: A instrução sem vinculação de esquema não é compatível com o Snowflake.
DELETE¶
Descrição¶
Exclui linhas das tabelas. (Instrução Delete de referência da linguagem Redshift SQL).
Observação
Essa sintaxe é totalmente compatível com o Snowflake.
Sintaxe da gramática¶
Amostra de padrões da origem¶
Dados de configuração¶
Redshift¶
Cláusula From¶
Atualize uma tabela fazendo referência a informações de outras tabelas. No Redshift, a palavra-chave FROM é opcional, mas no Snowflake, ela é obrigatória. Portanto, ela será adicionada nos casos em que estiver faltando.
Código de entrada:¶
Redshift¶
Resultado¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
Código de saída:¶
Snowflake¶
Resultado¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
Cláusula Where¶
Restringe as atualizações às linhas que correspondem a uma condição. Quando a condição for verdadeira, as colunas SET especificadas serão atualizadas. A condição pode ser um predicado simples em uma coluna ou uma condição baseada no resultado de uma subconsulta. Essa cláusula é totalmente equivalente no Snowflake.
Código de entrada:¶
Redshift¶
Resultado¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
1 |
Alice |
Vendas |
2 |
2 |
Bob |
Vendas |
1 |
3 |
Charlie |
Vendas |
1 |
7 |
Grace |
Engenharia |
6 |
8 |
Helen |
Engenharia |
7 |
9 |
Hera |
Engenharia |
7 |
10 |
John |
Vendas |
3 |
11 |
Joe |
Engenharia |
5 |
Código de saída:¶
Snowflake¶
Resultado¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
1 |
Alice |
Vendas |
2 |
2 |
Bob |
Vendas |
1 |
3 |
Charlie |
Vendas |
1 |
7 |
Grace |
Engenharia |
6 |
8 |
Helen |
Engenharia |
7 |
9 |
Hera |
Engenharia |
7 |
10 |
John |
Vendas |
3 |
11 |
Joe |
Engenharia |
5 |
Cláusula Using¶
Essa cláusula introduz uma lista de tabelas quando tabelas adicionais são referenciadas na condição da cláusula WHERE. Essa cláusula é totalmente equivalente no Snowflake.
Código de entrada:¶
Redshift¶
Resultado¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
4 |
David |
Marketing |
2 |
5 |
Eve |
Marketing |
4 |
6 |
Frank |
Marketing |
4 |
7 |
Grace |
Engenharia |
6 |
8 |
Helen |
Engenharia |
7 |
9 |
Hera |
Engenharia |
7 |
11 |
Joe |
Engenharia |
5 |
Código de saída:¶
Snowflake¶
Resultado¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
4 |
David |
Marketing |
2 |
5 |
Eve |
Marketing |
4 |
6 |
Frank |
Marketing |
4 |
7 |
Grace |
Engenharia |
6 |
8 |
Helen |
Engenharia |
7 |
9 |
Hera |
Engenharia |
7 |
11 |
Joe |
Engenharia |
5 |
Cláusula WITH¶
Essa cláusula especifica uma ou mais expressões comuns de tabela (CTE). Os nomes das colunas de saída são opcionais para CTEs não recursivos, mas obrigatórios para os recursivos.
Como essa cláusula não pode ser usada em uma instrução DELETE, ela é transformada em tabelas temporárias com suas consultas correspondentes. Depois que a instrução DELETE é executada, essas tabelas temporárias são descartadas para limpar, liberar recursos e evitar colisões de nomes ao criar tabelas na mesma sessão. Além disso, se existir uma tabela regular com o mesmo nome, ela terá precedência novamente, pois a tabela temporária tem prioridade sobre qualquer outra tabela com o mesmo nome na mesma sessão.
CTE Não recursivo¶
Código de entrada:¶
Redshift¶
Resultado¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
4 |
David |
Marketing |
2 |
5 |
Eve |
Marketing |
4 |
6 |
Frank |
Marketing |
4 |
Código de saída:¶
Snowflake¶
Resultado¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
4 |
David |
Marketing |
2 |
5 |
Eve |
Marketing |
4 |
6 |
Frank |
Marketing |
4 |
CTE Recursivo¶
Código de entrada:¶
Redshift¶
Resultado¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
1 |
Alice |
Vendas |
2 |
2 |
Bob |
Vendas |
1 |
3 |
Charlie |
Vendas |
1 |
10 |
John |
Vendas |
3 |
Código de saída:¶
Snowflake¶
Resultado¶
ID |
NAME |
DEPARTMENT |
MANAGER_ID |
|---|---|---|---|
1 |
Alice |
Vendas |
2 |
2 |
Bob |
Vendas |
1 |
3 |
Charlie |
Vendas |
1 |
10 |
John |
Vendas |
3 |
Excluir exibição materializada¶
No Redshift, você pode aplicar a instrução DELETE a exibições materializadas usadas para ingestão de streaming. No Snowflake, essas exibições são transformadas em tabelas dinâmicas, e a instrução DELETE não pode ser usada em tabelas dinâmicas. Por esse motivo, um EWI será adicionado.
Código de entrada:¶
Redshift¶
Código de saída:¶
Snowflake¶
Problemas conhecidos ¶
Replicar a funcionalidade da cláusula
WITHrequer a criação de tabelas temporárias que espelham cada Common Table Expression (CTE). No entanto, essa abordagem falha se uma tabela temporária com o mesmo nome já existir na sessão atual, causando um erro.
EWIs relacionados¶
SSC-FDM-0031: Parâmetros necessários da tabela dinâmica definidos por padrão.
SSC-EWI-RS0008: Materialized view is transformed into a dynamic table, and the DELETE statement cannot be used on dynamic tables in Snowflake.
EXECUTE¶
Descrição¶
A instrução
EXECUTEIMMEDIATEcria e executa uma instrução dinâmica SQL em uma única operação.O SQL dinâmico nativo usa a instrução
EXECUTEIMMEDIATEpara processar a maioria das instruções dinâmicas SQL. (Referência de linguagem do RedShift , instrução EXECUTE)
Sintaxe da gramática¶
Amostra de padrões da origem¶
Exemplo concatenado
Código de entrada
Redshift¶
Código de saída
Snowflake¶
Transformação de função¶
Código de entrada¶
Redshift¶
Código de saída¶
Snowflake¶
Erro na análise das consultas¶
Código de entrada¶
Redshift¶
Código de saída¶
Snowflake¶
Cláusula INTO¶
Código de entrada¶
Redshift¶
Código de saída¶
Snowflake¶
Problemas conhecidos¶
1. Execution results cannot be stored in variables.¶
O SnowScripting não é compatível com as cláusulas INTO nem BULK COLLECT INTO. Por esse motivo, os resultados precisarão ser transmitidos por outros meios.
2. Dynamic SQL Execution queries may be marked incorrectly as non-runnable.¶
Em alguns cenários, uma instrução de execução pode ser comentada independentemente de ser segura ou não para ser executada, portanto, leve isso em consideração:
EWIs relacionados¶
SSC-EWI-0027: Variável com consulta inválida.
SSC-EWI-0030: A instrução abaixo utiliza SQL dinâmico.
INSERT¶
Descrição¶
Insere novas linhas em uma tabela. (Instrução Insert de referência da linguagem Redshift SQL).
Aviso
Essa sintaxe é parcialmente compatível com o Snowflake.
Sintaxe da gramática¶
Amostra de padrões da origem¶
Dados de configuração¶
Redshift¶
Valores padrão¶
Ele insere uma linha completa com seus valores padrão. Se alguma coluna não tiver valores padrão, os valores NULL serão inseridos nessas colunas.
Esta cláusula não pode especificar colunas individuais; sempre insere uma linha completa com seus valores padrão. Além disso, colunas com a restrição NOT NULL não podem ser incluídas na definição da tabela. Para replicar esse comportamento no Snowflake, SnowConvert AI inserir uma coluna com um valor DEFAULT na tabela. Esta ação insere uma linha completa, usando o valor padrão para cada coluna.
Código de entrada:¶
Redshift¶
Resultado¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
NULL |
20000 |
Marketing |
Código de saída:¶
Snowflake¶
Resultado¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
NULL |
20000 |
Marketing |
Consulta¶
Insere uma ou mais linhas na tabela usando uma consulta. Todas as linhas produzidas pela consulta serão inseridas na tabela. A consulta deve retornar uma lista de colunas que seja compatível com as colunas da tabela, embora os nomes das colunas não precisem corresponder. Essa funcionalidade é totalmente equivalente no Snowflake.
Código de entrada:¶
Redshift¶
Resultado¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
Grace Lee |
32000 |
Operações |
2 |
Hannah Gray |
26000 |
Finance |
Código de saída:¶
Snowflake¶
Resultado¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
Grace Lee |
32000 |
Operações |
2 |
Hannah Gray |
26000 |
Finance |
Problemas conhecidos ¶
Certas expressões não podem ser usadas na cláusula VALUES no Snowflake. Por exemplo, no Redshift, a função JSON_PARSE pode ser usada na cláusula VALUES para inserir um valor JSON em um tipo de dados SUPER. No Snowflake, entretanto, a função PARSE_JSON não pode ser usada na cláusula VALUES para inserir um valor JSON em um tipo de dados VARIANT. Em vez disso, uma consulta pode ser usada no lugar da cláusula VALUES. Para obter mais detalhes, consulte a documentação do Snowflake. Você também pode consultar o artigo a seguir para obter mais informações.
EWIs relacionados¶
Não há problemas conhecidos.
MERGE¶
Sintaxe da gramática¶
Para obter mais informações, consulte a documentação MERGE do Redshift.
Amostra de padrões da origem¶
UPDATE - INSERT¶
Não há diferenças entre as linguagens. O código é mantido em sua forma original.
Código de entrada:¶
Redshift¶
Código de saída:¶
Snowflake¶
DELETE - INSERT¶
Não há diferenças entre as linguagens. O código é mantido em sua forma original.
Código de entrada:¶
Redshift¶
Código de saída:¶
Snowflake¶
REMOVE DUPLICATES¶
A cláusula REMOVE DUPLICATES não é compatível com o Snowflake, no entanto, há uma solução alternativa que pode emular o comportamento original.
O código de saída terá três novas instruções:
TEMPORARY TABLE com os valores duplicados da tabela de origem e de destino que correspondem à condição
Uma instrução INSERT que adiciona os valores pendentes à tabela de destino após a mesclagem
Uma instrução DROP que elimina a tabela temporária gerada.
Isso é necessário porque o comportamento de DROP DUPLICATES remove os valores duplicados da tabela de destino e, em seguida, insere os valores que correspondem à condição da tabela de origem.
Código de entrada:¶
Redshift¶
Resultados¶
ID |
NAME |
|---|---|
30 |
Daisy |
22 |
Clarence |
30 |
Tony |
11 |
Alice |
23 |
David |
Código de saída:¶
Snowflake¶
Resultados¶
ID |
NAME |
|---|---|
22 |
Clarence |
30 |
Tony |
30 |
Daisy |
11 |
Alice |
23 |
David |
Problemas conhecidos¶
Não há problemas conhecidos.
EWIs relacionados¶
SSC-EWI-RS0009: Informações semânticas não encontradas para a tabela de origem.
SSC-FDM-RS0005: Redshift MERGE rejects duplicate source rows. Snowflake allows them, which may produce different results.
UPDATE¶
Descrição¶
Atualiza os valores em uma ou mais colunas da tabela quando uma condição é atendida. (Instrução Update de referência da linguagem Redshift SQL).
Observação
Essa sintaxe é totalmente compatível com o Snowflake.
Sintaxe da gramática¶
Amostra de padrões da origem¶
Dados de configuração¶
Redshift¶
Alias¶
Embora a gramática do Snowflake não especifique que um alias de tabela possa ser usado, esse é um código válido no Snowflake.
Código de entrada:¶
Redshift¶
Resultado¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
Alice |
505000 |
HR |
2 |
Bob |
600000 |
Engenharia |
3 |
Charlie |
700000 |
Engenharia |
4 |
David |
405000 |
Marketing |
5 |
Eve |
455000 |
HR |
6 |
Frank |
750000 |
Engenharia |
7 |
Grace |
650000 |
Engenharia |
8 |
Helen |
395000 |
Marketing |
9 |
Hera |
485000 |
HR |
10 |
Jack |
425000 |
Engenharia |
11 |
Ken |
700000 |
Marketing |
12 |
Liam |
600000 |
Engenharia |
13 |
Mona |
475000 |
HR |
Código de saída:¶
Snowflake¶
Resultado¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
Alice |
505000 |
HR |
2 |
Bob |
600000 |
Engenharia |
3 |
Charlie |
700000 |
Engenharia |
4 |
David |
405000 |
Marketing |
5 |
Eve |
455000 |
HR |
6 |
Frank |
750000 |
Engenharia |
7 |
Grace |
650000 |
Engenharia |
8 |
Helen |
395000 |
Marketing |
9 |
Hera |
485000 |
HR |
10 |
Jack |
425000 |
Engenharia |
11 |
Ken |
700000 |
Marketing |
12 |
Liam |
600000 |
Engenharia |
13 |
Mona |
475000 |
HR |
Cláusula WITH¶
Essa cláusula especifica uma ou mais expressões comuns de tabela (CTE). Os nomes das colunas de saída são opcionais para CTEs não recursivos, mas obrigatórios para os recursivos.
Como essa cláusula não pode ser usada em uma instrução UPDATE, ela é transformada em tabelas temporárias com suas consultas correspondentes. Depois que a instrução UPDATE é executada, essas tabelas temporárias são descartadas para limpar, liberar recursos e evitar colisões de nomes ao criar tabelas na mesma sessão. Além disso, se existir uma tabela regular com o mesmo nome, ela terá precedência novamente, pois a tabela temporária tem prioridade sobre qualquer outra tabela com o mesmo nome na mesma sessão.
CTE Não recursivo¶
Código de entrada:¶
Redshift¶
Resultado¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
Alice |
500000 |
HR |
2 |
Bob |
600000 |
Engenharia |
3 |
Charlie |
700000 |
Engenharia |
4 |
David |
546923 |
Marketing |
5 |
Eve |
546923 |
HR |
6 |
Frank |
750000 |
Engenharia |
7 |
Grace |
650000 |
Engenharia |
8 |
Helen |
546923 |
Marketing |
9 |
Hera |
546923 |
HR |
10 |
Jack |
546923 |
Engenharia |
11 |
Ken |
700000 |
Marketing |
12 |
Liam |
600000 |
Engenharia |
13 |
Mona |
546923 |
HR |
Código de saída:¶
Snowflake¶
Resultado¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
Alice |
500000 |
HR |
2 |
Bob |
600000 |
Engenharia |
3 |
Charlie |
700000 |
Engenharia |
4 |
David |
546923 |
Marketing |
5 |
Eve |
546923 |
HR |
6 |
Frank |
750000 |
Engenharia |
7 |
Grace |
650000 |
Engenharia |
8 |
Helen |
546923 |
Marketing |
9 |
Hera |
546923 |
HR |
10 |
Jack |
546923 |
Engenharia |
11 |
Ken |
700000 |
Marketing |
12 |
Liam |
600000 |
Engenharia |
13 |
Mona |
546923 |
HR |
CTE Recursivo¶
Código de entrada:¶
Redshift¶
Resultado¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
Alice |
526666 |
HR |
2 |
Bob |
670000 |
Engenharia |
3 |
Charlie |
773333 |
Engenharia |
4 |
David |
433333 |
Marketing |
5 |
Eve |
475000 |
HR |
6 |
Frank |
825000 |
Engenharia |
7 |
Grace |
721666 |
Engenharia |
8 |
Helen |
423000 |
Marketing |
9 |
Hera |
506000 |
HR |
10 |
Jack |
484000 |
Engenharia |
11 |
Ken |
743333 |
Marketing |
12 |
Liam |
670000 |
Engenharia |
13 |
Mona |
495668 |
HR |
Código de saída:¶
Snowflake¶
Resultado¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
Alice |
526667 |
HR |
2 |
Bob |
670000 |
Engenharia |
3 |
Charlie |
773333 |
Engenharia |
4 |
David |
433333 |
Marketing |
5 |
Eve |
475000 |
HR |
6 |
Frank |
825000 |
Engenharia |
7 |
Grace |
721667 |
Engenharia |
8 |
Helen |
423000 |
Marketing |
9 |
Hera |
506000 |
HR |
10 |
Jack |
484000 |
Engenharia |
11 |
Ken |
743333 |
Marketing |
12 |
Liam |
670000 |
Engenharia |
13 |
Mona |
495667 |
HR |
Valores SETDEFAULT¶
Código de entrada:¶
Redshift¶
Resultado¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
Alice |
20000 |
Vendas |
2 |
Bob |
600000 |
Engenharia |
3 |
Charlie |
700000 |
Engenharia |
4 |
David |
400000 |
Marketing |
5 |
Eve |
20000 |
Vendas |
6 |
Frank |
750000 |
Engenharia |
7 |
Grace |
650000 |
Engenharia |
8 |
Helen |
390000 |
Marketing |
9 |
Hera |
20000 |
Vendas |
10 |
Jack |
420000 |
Engenharia |
11 |
Ken |
700000 |
Marketing |
12 |
Liam |
600000 |
Engenharia |
13 |
Mona |
20000 |
Vendas |
Código de saída:¶
Snowflake¶
Resultado¶
ID |
NAME |
SALARY |
DEPARTMENT |
|---|---|---|---|
1 |
Alice |
20000 |
Vendas |
2 |
Bob |
600000 |
Engenharia |
3 |
Charlie |
700000 |
Engenharia |
4 |
David |
400000 |
Marketing |
5 |
Eve |
20000 |
Vendas |
6 |
Frank |
750000 |
Engenharia |
7 |
Grace |
650000 |
Engenharia |
8 |
Helen |
390000 |
Marketing |
9 |
Hera |
20000 |
Vendas |
10 |
Jack |
420000 |
Engenharia |
11 |
Ken |
700000 |
Marketing |
12 |
Liam |
600000 |
Engenharia |
13 |
Mona |
20000 |
Vendas |
Cláusula SET¶
Ele é responsável por modificar os valores nas colunas. Semelhante ao Snowflake, as consultas de atualização com várias correspondências por linha gerarão um erro quando o parâmetro de configuração ERROR_ON_NONDETERMINISTIC_UPDATE for definido como verdadeiro. Esse sinalizador funciona da mesma forma no Snowflake e até usa o mesmo nome, ERROR_ON_NONDETERMINISTIC_UPDATE.
No entanto, quando esse sinalizador é desativado, nenhum erro é retornado e uma das linhas correspondentes é usada para atualizar a linha de destino. A linha unida selecionada é não determinística e arbitrária em ambas as linguagens; o comportamento pode não ser consistente em todas as execuções, o que pode levar a inconsistências de dados.
Dados de configuração:¶
Redshift¶
Código de entrada:¶
Redshift¶
Resultado¶
K |
V |
|---|---|
0 |
16 |
Código de saída:¶
Snowflake¶
Resultado¶
K |
V |
|---|---|
0 |
14 |
Problemas conhecidos ¶
Update queries with multiple matches per row may cause data inconsistencies. Although both platforms have the flag ERROR_ON_NONDETERMINISTIC_UPDATE, these values will always be nondeterministic. Snowflake offers recommendations for handling these scenarios. See the Snowflake UPDATE examples for more details.
Replicar a funcionalidade da cláusula
WITHrequer a criação de tabelas temporárias que espelham cada Common Table Expression (CTE). No entanto, essa abordagem falha se uma tabela temporária com o mesmo nome já existir na sessão atual, causando um erro.
EWIs relacionados¶
Não há problemas conhecidos.