SnowConvert AI – Diferenças funcionais gerais¶
SSC-FDM-0001¶
As exibições que selecionam todas as colunas de uma única tabela não são obrigatórias no Snowflake.
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
As exibições que selecionam apenas todas as colunas de uma única tabela e não têm cláusulas de filtragem não são obrigatórias no Snowflake e podem afetar o desempenho.
Exemplo de código¶
Código de entrada (Oracle):¶
Código gerado:¶
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0002¶
Subconsultas correlacionadas podem apresentar diferenças funcionais.
Descrição¶
Esta mensagem é exibida quando uma Subconsulta correlacionada (subconsulta que se refere a uma coluna da consulta externa) é encontrada. Esse tipo de subconsulta pode, em alguns casos, apresentar algumas diferenças funcionais no Snowflake (Trabalho com subconsultas).
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0003¶
Inconsistência na taxa de conversão.
Descrição¶
Esta mensagem é exibida quando uma inconsistência na taxa de conversão é encontrada no campo de avaliação especificado. Essas situações são resolvidas automaticamente pelo SnowConvert AI; portanto, este é apenas um aviso informativo.
Nota
Esse aviso informativo será visível apenas nos documentos de avaliação e não no código de saída.
Práticas recomendadas¶
Apesar da capacidade do SnowConvert AI de corrigir o problema automaticamente, você ainda pode notificar a equipe de suporte do SnowConvert AI enviando um e-mail para snowconvert-support@snowflake.com e especificando o problema.
SSC-FDM-0004¶
Tabela externa convertida em tabela regular
Descrição¶
This warning is added to clauses related to external handling. Snowflake recommends that all data should be managed inside the Snowflake data storage. For more information on this subject, see the Snowflake data storage considerations.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Os dados armazenados em arquivos de tabelas externas devem ser movidos de alguma forma para o banco de dados do Snowflake.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0005¶
TIME ZONE não são compatíveis com o tipo de dados Time.
Descrição¶
O tipo de dados Time no Snowflake não armazena valores de fuso horário.
TIME internally stores “wallclock” time, and all operations on TIME values are performed without taking any time zone into consideration. For more information, see the Snowflake TIME data type documentation.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Nenhuma ação do usuário final é necessária.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0006¶
A coluna do tipo Number pode não se comportar da mesma forma no Snowflake.
Descrição¶
Esta mensagem de diferença funcional aparece quando uma coluna do tipo NUMBER está sendo criada em uma tabela. A razão para isso reside nas diferenças aritméticas ao realizar operações relacionadas às escalas de valores intermediários no Snowflake, o que pode fazer com que algumas operações falhem. Para obter mais informações, consulte a publicação da Snowflake sobre números intermediários no Snowflake e Número fora do intervalo representável.
To avoid these arithmetic issues, you can run data samplings to verify the needed precision and scales for these operations.
Códigos de exemplo¶
Tabela simples com colunas de números¶
Código de entrada (Oracle):¶
Código gerado:¶
Exemplos de problemas aritméticos¶
Os exemplos a seguir mostram como os problemas aritméticos podem ocorrer ao usar colunas do tipo Number:
Código Snowflake com erro de divisão:¶
Código Snowflake com erro de multiplicação:¶
Ao executar as instruções SELECT, o Snowflake retornará um erro:
Número fora do intervalo representável: tipo FIXEDSB16{nullable}, valor 1.0000000000000000000
Isso ocorre porque o resultado da operação intermediária excede a capacidade máxima do Snowflake; reduzir as escalas de números em 1 em cada exemplo corrigirá o erro e funcionará normalmente:
Código Snowflake com divisão:¶
Código Snowflake com Multiplicação:¶
Por esse motivo, o SnowConvert AI define a escala padrão de Numbers como 18, minimizando o número de erros durante a migração.
Práticas recomendadas¶
Verifique se os valores intermediários de suas operações não excedem uma escala de 37, pois esse é o máximo do Snowflake.
Execute amostragens de dados em seus dados para garantir que você tenha a precisão e as escalas necessárias antes de executar qualquer operação.
Na maioria dos casos, após realizar alguma amostragem de dados ou discutir com a empresa, você pode chegar à conclusão de que a precisão pode ser diferente. Por exemplo, para colunas
MONEY, uma precisão típica éNUMBER(20,4). No Snowflake, não é fácil alterar o tipo de dados de uma coluna. Você pode consultar esta postagem em nosso fórum, que fornece algumas orientações sobre como alterar os tipos de dados das suas colunas e preservar seus dados.Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0007¶
Elemento com dependências ausentes
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
Há uma dependência ausente para um objeto. O Snow Convert não conseguiu resolver alguns tipos de dados. Também existe a possibilidade de ocorrer um erro de implantação se a dependência não está no código-fonte.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Nota
Observe que a definição TABLE1 está ausente.
Práticas recomendadas¶
Certifique-se de que todas as dependências dos objetos estejam no código-fonte.
Caso contrário, encontre as referências ao objeto no código e verifique se as operações estão sendo gerenciadas corretamente.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0008¶
On Commit não compatível
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição ¶
As cláusulas ON COMMIT em sua instrução CREATE TABLE foram comentadas. O Snowflake não é compatível com a cláusula ON COMMIT, pois ela é normalmente utilizada para tabelas temporárias em outros dialetos SQL. Se você precisar gerenciar o comportamento específico de transações, considere usar as transações ou tabelas temporárias do Snowflake com instruções TRUNCATE ou DROP explícitas.
Exemplo de código¶
Código de entrada¶
Código gerado¶
SSC-FDM-0009¶
A funcionalidade GLOBAL TEMPORARY TABLE não é compatível.
Descrição ¶
Tabelas temporárias globais são consideradas um padrão complexo, devido ao fato de poderem vir em diversas variações, conforme indicado na documentação do Snowflake.
Exemplo de código¶
Código de entrada¶
Código gerado¶
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0010¶
Tipo alterado para Date
Descrição ¶
Esta mensagem é exibida quando o SnowConvert AI encontra um DEFAULT SYSDATE e o tipo de dados NOT é um tipo de dados DATE ou TIMESTAMP. Nesse caso, o tipo de dados é alterado para DATE.
Exemplo de código¶
Código de entrada¶
Código gerado¶
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0011¶
O nome da coluna é uma palavra-chave reservada do Snowflake.
Nota
Este FDM está obsoleto. Consulte a documentação SSC-EWI-0045.
Descrição ¶
Nomes de colunas válidos para a linguagem de origem, mas que são palavras-chave reservadas no Snowflake.
Exemplo de código¶
Código de entrada (Oracle):¶
Código gerado:¶
Práticas recomendadas¶
Considere renomear as colunas que usam nomes não compatíveis com o Snowflake.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0012¶
O nome da restrição em algumas restrições não é compatível.
Descrição ¶
Esta mensagem é adicionada quando uma restrição é do tipo Null, Not Null ou default e foi definida com um nome. O Snowflake não é compatível com o nome nessas restrições. Para isso, o SnowConvert AI vai removê-lo e adicionar o comentário.
Exemplo de código¶
Código de entrada¶
Código gerado¶
Práticas recomendadas¶
Nenhuma ação do usuário final é necessária.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0013¶
A expressão de fuso horário não pôde ser mapeada.
Descrição ¶
This FDM message is added to indicate scenarios where the actual value of a timezone expression cannot be determined, and therefore, the translated results might be different. When the timezone value used is a literal string, SnowConvert AI can take it and map it to its corresponding timezone value in Snowflake. However, when this value is specified by an expression, SnowConvert AI cannot get the timezone value that will be used at runtime and, therefore, cannot map this value to its corresponding Snowflake equivalent.
Exemplo de código¶
Código de entrada (Oracle)¶
Código gerado¶
Código de entrada (Teradata)¶
Código gerado¶
¶
Nota
Compatibilidade de fuso horário no Oracle
A maioria das expressões de nomes de fuso horário no Oracle são compatíveis diretamente no Snowflake; nesse caso, a migração será executada sem problemas. Além disso, aqui está uma lista das expressões que não são compatíveis com o Snowflake no momento e, portanto, incluirão a mensagem de diferença funcional.
Africa/Doula
Asia/Ulaanbaator
Asia/Yetaterinburg
Canada/East-Saskatchewan
CST
PST
US/Pacific-New
Práticas recomendadas¶
Nenhuma ação do usuário final é necessária.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0014¶
Instrução Check não compatível.
Nota
Este FDM está obsoleto. Consulte a documentação SSC-EWI-0035.
Descrição¶
A restrição CHECK não é compatível com o Snowflake, mas não o afeta funcionalmente.
Exemplo de código¶
Código de entrada Oracle:¶
Código gerado: ¶
Código de entrada do Teradata: ¶
Código gerado: ¶
Código de entrada SqlServer¶
Código gerado:¶
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0015¶
Tipo personalizado referenciado na consulta não encontrado.
Descrição ¶
Este erro ocorre quando a definição de um tipo personalizado não foi encontrada ou um tipo de dados interno do Oracle não foi reconhecido pelo SnowConvert.
Exemplo de código¶
Código de entrada (Oracle):¶
Código gerado:¶
Práticas recomendadas¶
Verifique se o tipo de dados referenciado foi definido no código de entrada.
Consulte a documentação sobre tipos de dados do Snowflake para encontrar um equivalente para o tipo de dados.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0016¶
Constantes não são compatíveis com o Snowflake Scripting. O valor foi transformado em uma variável.
Descrição ¶
O Snowflake Scripting não é compatível com constantes. Portanto, todas as constantes dentro de procedimentos são transformadas em variáveis quando o sinalizador do Snowflake Scripting está ativo.
Exemplo de código¶
Oracle:¶
Snowflake Scripting:¶
Práticas recomendadas¶
Nenhuma ação do usuário final é necessária.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0017¶
A cláusula WITH SYSTEM VERSIONING não é compatível com o Snowflake.
Descrição¶
A cláusula WITH SYSTEM VERSIONING em ANSI SQL é utilizada para habilitar o controle de versão do sistema para uma tabela, permitindo que você mantenha um histórico das alterações nos dados da tabela ao longo do tempo. Esta cláusula não é compatível com o Snowflake.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
You can use Time Travel in Snowflake, Time Travel enables accessing historical data (that is, data that has been changed or deleted) at any point within a defined period. It serves as a powerful tool for performing the following tasks:
Restaurar objetos relacionados a dados (tabelas, esquemas e bancos de dados) que podem ter sido excluídos acidental ou intencionalmente.
Duplicar e fazer backup de dados de pontos principais no passado.
Analisar o uso e a manipulação de dados durante períodos especificados.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0018¶
A cláusula CHARACTER SET não é compatível com o Snowflake.
Descrição¶
A opção de coluna CHARACTER SET determina o conjunto permitido de caracteres que podem ser armazenados na coluna; essa cláusula não é compatível com o Snowflake.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0019¶
Semantic information could not be loaded.
Descrição¶
Este aviso informa ao usuário que o SnowConvert AI não conseguiu carregar informações semânticas para um objeto específico. Isso provavelmente ocorre porque, se houver um objeto duplicado com o mesmo nome, o SnowConvert AI não conseguirá carregar as informações semânticas desse objeto e concluir a análise.
Exemplo de código¶
Código de entrada:¶
Código gerado: ¶
Práticas recomendadas¶
Verifique se há objetos duplicados no código de entrada, pois isso pode afetar o carregamento das informações semânticas.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0020¶
Vários conjuntos de resultados são retornados em tabelas temporárias
Descrição¶
Os procedimentos do Snowflake Scripting permitem que apenas um conjunto de resultados seja retornado por procedimento.
Para replicar o comportamento do Teradata, quando há dois ou mais conjuntos de resultados a serem retornados, eles são armazenados em tabelas temporárias. O procedimento do Snowflake Scripting retornará uma matriz contendo o nome das tabelas temporárias.
Exemplo de código¶
Código de entrada (Teradata):¶
Código gerado:¶
Práticas recomendadas¶
Para obter os conjuntos de resultados, é necessário executar uma consulta SELECT com o nome das tabelas temporárias retornadas pelo procedimento.
Sempre que possível, evite procedimentos que retornem vários conjuntos de resultados; em vez disso, torne-os a única responsabilidade por resultados mais diretos.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0021¶
A criação de índices não é compatível
Descrição¶
Devido a razões arquitetônicas, o Snowflake não é compatível com índices; portanto, o SnowConvert AI comentará todo o código relacionado à criação de índices. O Snowflake automaticamente cria micropartições para cada tabela. Isso ajuda a acelerar o desempenho das operações DML, e o usuário não precisa se preocupar em criar ou gerenciar essas micropartições.
Normalmente, isso é suficiente para conseguir um ótimo desempenho de consulta. No entanto, existem maneiras de melhorar isso criando chaves de clustering de dados. A página oficial do Snowflake fornece mais informações sobre micropartições e agrupamento de dados.
Exemplo de código¶
Código de entrada (Oracle):¶
Código gerado:¶
Práticas recomendadas¶
O clustering de dados pode ser uma maneira de acelerar o desempenho das consultas em tabelas.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0022¶
A unidade de quadro de janela foi alterada para Linhas
Gravidade¶
Low
Descrição¶
Este aviso é adicionado quando uma unidade de quadro de janela não compatível é alterada para Linhas, levando a diferenças na saída. Um exemplo disso é a unidade GROUPS, que não é compatível com o Snowflake.
Observe que essa mensagem também é utilizada em casos em que uma unidade de quadro de janela é parcialmente não compatível, levando à sua alteração, como a unidade RANGE.
Exemplo de código¶
Considere os dados a seguir como um exemplo para ilustrar a explicação.
C_NAME |
C_BIRTH_DAY |
|---|---|
USA |
1 |
USA |
4 |
Polônia |
9 |
Canadá |
10 |
USA |
5 |
Canadá |
12 |
Costa Rica |
3 |
Polônia |
4 |
USA |
2 |
Costa Rica |
7 |
Costa Rica |
10 |
Oracle:¶
Código¶
SELECT
C_NAME,
SUM(C_BIRTH_DAY)
OVER (ORDER BY C_BIRTH_DAY
RANGE BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS MAX1
FROM WINDOW_TABLE;
Resultado¶
C_NAME |
MAX1 |
|---|---|
USA |
- |
USA |
1 |
Costa Rica |
3 |
USA |
6 |
Polônia |
6 |
USA |
14 |
Costa Rica |
19 |
Polônia |
26 |
Canadá |
35 |
Costa Rica |
35 |
Canadá |
55 |
Snowflake:¶
Código¶
Resultado¶
C_NAME |
MAX1 |
|---|---|
USA |
- |
USA |
1 |
Costa Rica |
3 |
USA |
6 |
Polônia |
10 |
USA |
14 |
Costa Rica |
19 |
Polônia |
26 |
Canadá |
35 |
Costa Rica |
45 |
Canadá |
55 |
Práticas recomendadas¶
Verifique se há ordenação determinística das linhas para garantir saídas determinísticas ao executar no Snowflake.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0023¶
Uma tabela temporária global está sendo referenciada.
Gravidade¶
Medium
Descrição¶
O SnowConvert AI transforma tabelas temporárias globais em funções de criação de tabela regulares. As referências a estas tabelas podem se comportar de forma diferente do esperado.
Exemplo de código¶
Entrada¶
Saída¶
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0024¶
A funcionalidade é atualmente incompatível com o Snowflake Scripting
Nota
Este FDM está obsoleto. Consulte a documentação SSC-EWI-0058.
Descrição¶
Este erro acontece quando uma instrução usada em um procedimento de criação é atualmente incompatível com o Snowflake Scripting.
Exemplo de código¶
Código de entrada (Oracle):¶
Código gerado:¶
Práticas recomendadas¶
Nenhuma ação do usuário final é necessária.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0025¶
Unexpected end of statement
Descrição¶
This message is reported when SnowConvert AI encounters an unexpected end of statement during conversion. This typically occurs when the parser reaches the end of the source code while still expecting additional tokens to complete a statement. The EWI includes the line number of the original source code where the issue was detected.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Check the specified line in the original source code for missing semicolons or incomplete statements.
Ensure all statements are properly terminated.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0026¶
Tipo não compatível com o Snowflake
Nota
Este FDM está obsoleto. Consulte a documentação SSC-EWI-0028.
Descrição¶
Esta mensagem aparece quando um tipo é incompatível com o Snowflake.
Exemplo¶
Código de entrada (Oracle):¶
Código gerado:¶
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0027¶
Removed next statement, not applicable in Snowflake.
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
Esta mensagem aparece quando uma instrução específica não é aplicável no Snowflake. Isso significa que não há equivalente no Snowflake para essa instrução e ela não é mais necessária; por esse motivo, ela é removida do código-fonte. No entanto, o SnowConvert AI mantém a instrução original como parte do comentário no final.
Exemplo de código¶
Código de entrada: ¶
Código gerado: ¶
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0028¶
Sem suporte.
Nota
Este FDM está obsoleto. Consulte a documentação SSC-EWI-0021.
Descrição¶
Esta mensagem aparece quando um nó ou instrução específica do código-fonte não é compatível com o Snowflake.
Exemplo de código¶
Código de entrada: ¶
Código gerado:¶
Práticas recomendadas¶
If this error happens, it is because there is no Snowflake equivalent for the node that is being converted.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0029¶
A função definida pelo usuário foi transformada em um procedimento do Snowflake.
Aviso
Este EWI está obsoleto. Consulte a documentação SSC-EWI-0068.
Gravidade¶
Low
Descrição¶
As funções definidas pelo usuário do Snowflake são incompatíveis com os mesmos recursos do Oracle ou SQL Server. Para manter a equivalência funcional, a função é transformada em um procedimento armazenado do Snowflake. Isso afetará seu uso em consultas.
Exemplo de código¶
SQL Server:¶
Código de entrada¶
Código gerado¶
Oracle:¶
Código de entrada¶
Código gerado¶
Práticas recomendadas¶
Separe as consultas internas para manter a mesma lógica.
O código-fonte pode precisar ser reestruturado se adequar à abordagem de funções definidas pelo usuário do Snowflake.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0030¶
Substituição de caracteres inválidos para o novo identificador
Descrição¶
O identificador fornecido contém caracteres inválidos para a linguagem de saída. Esses caracteres foram substituídos por seus códigos UTF-8.
Exemplo de código¶
Código de entrada (Oracle):¶
Código gerado:¶
Práticas recomendadas¶
Nenhuma ação do usuário final é necessária.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0031¶
Parâmetros obrigatórios de tabelas dinâmicas definidos por padrão
Descrição¶
As exibições materializadas (e os índices de junção, no caso do Teradata) são migradas para as tabelas dinâmicas no Snowflake. As tabelas dinâmicas exigem a configuração de dois parâmetros: TARGET_LAG e WAREHOUSE.
Se esses parâmetros não forem definidos nas opções de configuração, eles serão definidos por padrão durante a conversão.
Leia mais sobre os parâmetros obrigatórios de tabelas dinâmicas aqui.
Exemplo de código¶
Código de entrada (Oracle):¶
Código gerado:¶
Práticas recomendadas¶
Configure os parâmetros obrigatórios da tabela dinâmica de acordo com suas necessidades.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0032¶
O parâmetro não é um valor literal; não foi possível aplicar totalmente a transformação.
Descrição¶
Para múltiplas transformações, o SnowConvert AI às vezes requer a validação do conteúdo de um parâmetro, o que só é possível se o parâmetro for um valor literal.
Esta mensagem é gerada para alertar o usuário de que o SnowConvert AI não conseguiu recuperar o valor do parâmetro porque ele foi passado por referência, fazendo com que a transformação da função ou instrução não fosse concluída.
Exemplo de código¶
Código de entrada (Redshift):¶
Código gerado:¶
Práticas recomendadas¶
Tente fornecer o parâmetro especificado como um valor literal.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0033¶
A cláusula de amostragem se comporta de maneira diferente no Snowflake.
Descrição¶
This message is generated to showcase the functional difference while sampling rows in Snowflake. The differences are related to the quantity of rows retrieved. When in Teradata there is the same quantity of rows in the non-deterministic output, it may change in Snowflake and return a few rows more or less. This is because a probability related topic and it is expected to behaves like that in Snowflake.
If there is a requirement of retrieving the same values and the same quantity, a deterministic output, it is recommended to use a seed in the Snowflake query.
Exemplo de código¶
Código de entrada (Teradata):¶
Código gerado:¶
Práticas recomendadas¶
Tente usar a parte da semente da consulta quando for necessária uma saída determinística.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0034¶
Estrutura convertida para VARIANT. Alguns de seus usos podem ter diferenças funcionais.
Descrição¶
O Snowflake não oferece suporte nativo ao tipo de dados STRUCT. O SnowConvert AI converte automaticamente STRUCT em VARIANT. Quando utilizado em instruções INSERT, os dados STRUCT serão tratados usando OBJECT_CONSTRUCT. Esteja ciente de que essa conversão pode introduzir diferenças funcionais em alguns casos de uso.
Exemplo de código¶
Código de entrada:¶
BigQuery¶
Código gerado:¶
Snowflake¶
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0035¶
A função INFER_SCHEMA requer um caminho de arquivo sem curingas para gerar o modelo de tabela; substitua o espaço reservado FILE_PATH por ela.
Descrição¶
A função INFER_SCHEMA é utilizada no Snowflake para gerar a definição de colunas de uma tabela com base na estrutura de um arquivo. Ela requer um parâmetro LOCATION que especifica o caminho para um arquivo ou pasta que será utilizado para construir as colunas da tabela. No entanto, esse caminho não é compatível com regex, o que significa que o caractere curinga * não é compatível.
Quando a tabela não tem colunas, o SnowConvert AI verifica todas as URIS para encontrar uma que não use curingas e a usará na função INFER_SCHEMA. Quando nenhuma URI atender a esses critérios, esta FDM e um espaço reservado FILE_PATH serão gerados. O espaço reservado deve ser substituído pelo caminho de um dos arquivos referenciados pela tabela externa para gerar as colunas da tabela.
Exemplo de código¶
Código de entrada:¶
BigQuery¶
Código gerado:¶
Snowflake¶
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0036¶
O formato de data/numérico transformado pode ter um comportamento diferente no Snowflake.
Descrição¶
Os formatos numéricos transformados para o Snowflake usam formatos de posição fixa. O formato transformado poderá falhar e gerar uma saída diferente quando houver mais dígitos na parte inteira do número do que posições de dígitos no formato; todos os dígitos são impressos como # para indicar excesso.
Nota
For SQL Server migrations: If you are converting SQL Server code that uses custom single-character date format specifiers (for example, %y, %M, %d, %H, %h, %m, %s) or advanced numeric format specifiers (for example, P, N, %), consider enabling the --enableFormatSpecifiersPreview preview flag. This flag enables access to new Snowflake format specifiers that provide more accurate translations of these formats. See Preview Features Settings for more details.
Note: This requires requesting preview access in your Snowflake account through this form.
Exemplo de código¶
Código de entrada:¶
SQL Server¶
Código gerado:¶
Snowflake¶
Resultado¶
Práticas recomendadas¶
Se o dígito numérico não couber no formato, atualize o formato adicionando mais dígitos com base nos possíveis valores de dados de entrada.
SSC-FDM-0037¶
A função de estatísticas não é necessária no Snowflake.
Descrição¶
As estatísticas DROP, COLLECT ou HELP não são necessárias no Snowflake. O Snowflake já coleta estatísticas utilizadas para otimização automática de consultas.
Exemplo de código¶
Código de entrada:¶
Código gerado¶
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0038¶
O microparticionamento é realizado automaticamente em todas as tabelas Snowflake.
Descrição¶
Esta mensagem é adicionada à instrução CREATE TABLE quando uma cláusula PARTITION BY está presente. A cláusula PARTITION BY, que controla o particionamento de tabelas em alguns bancos de dados, não é compatível com o Snowflake.
No Snowflake, todas as tabelas são divididas automaticamente em micropartições, que são unidades contíguas de armazenamento que variam de 50 MB a 500 MB de dados não compactados. Essa arquitetura permite a remoção altamente granular de tabelas grandes, que podem consistir em milhões de micropartições.
O Snowflake armazena automaticamente metadados para cada micropartição, incluindo:
O intervalo de valores para cada coluna na micropartição.
O número de valores distintos.
Propriedades adicionais utilizadas para otimização e processamento eficiente de consultas.
As tabelas são particionadas de forma transparente com base na ordem em que os dados são inseridos ou carregados. Para mais detalhes, consulte os benefícios do microparticionamento.
Exemplo de código¶
Código de entrada:¶
Código gerado¶
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0039¶
SQLWARNING may not be captured as an exception in Snowflake.
Descrição¶
In source databases such as Teradata, SQLWARNING can be caught in exception handlers. Snowflake’s exception handling may not capture SQLWARNING in the same way. When a handler is configured to catch SQLWARNING, SnowConvert AI translates it, but the behavior in Snowflake may differ.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Review exception handling logic that catches SQLWARNING; the handler may not be invoked in Snowflake for the same conditions.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0040¶
REGEXP_SUBSTR / REGEXP_INSTR function may fail if regex argument is not POSIX
Descrição¶
When translating regex-based functions (such as REGEXP_SUBSTR, REGEXP_INSTR) from source dialects to Snowflake, the regex argument must be valid POSIX syntax. Source dialects may support extended regex features that Snowflake does not. If the regex pattern uses non-POSIX syntax, the function may fail at runtime or produce different results.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Ensure regex patterns use POSIX-compliant syntax.
Test regex functions with sample data after conversion.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-FDM-0041¶
Default parameters were reordered to the end of the parameter list.
Descrição¶
Snowflake requires all parameters with default values to appear after all non-default parameters. When SnowConvert AI detects a procedure whose default parameters are not at the end of the parameter list, it automatically reorders them. Code not provided to SnowConvert AI that uses positional arguments may need to be updated to match the new parameter order.
Nota
This FDM replaces the deprecated SSC-EWI-0002, which previously only warned about the issue without performing the reorder.
Exemplo de código¶
Input Code (SQL Server):¶
Generated Code (SQL Server):¶
Código de entrada (Oracle):¶
Generated Code (Oracle):¶
Positional Call Site Conversion¶
When callers use positional arguments and the parameters have been reordered, SnowConvert AI automatically converts them to named arguments:
Práticas recomendadas¶
Review all callers of the affected procedure. If positional arguments are used, update them to match the new parameter order or convert them to named arguments.
Consider using named arguments (e.g.,
param1 => value) instead of positional arguments to avoid issues with parameter ordering.Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com