SnowConvert: Relatório de avaliação¶
Resumo geral¶
O objetivo deste documento é fornecer orientação aos usuários para que entendam os resultados resumidos das ferramentas de conversão do SnowConvert. Ele orientará você sobre as diferentes métricas retornadas e como essas métricas podem ser usadas para determinar o nível de automação alcançado e a quantidade de esforço manual necessária para transformar o código de saída em um código Snowflake funcionalmente equivalente.
A maioria dos conceitos apresentados neste documento já foi explicada na página principal do Relatório. Mas aqui estão algumas outras informações úteis sobre as informações mais importantes da imagem acima.
Total de erros de análise: O número de vezes que a ferramenta de conversão encontrou fragmentos de texto que não puderam ser reconhecidos como elementos sintaticamente corretos para o idioma de origem em conversão. Um erro de análise pode ter um impacto pequeno ou grande. É importante determinar o número de LOCs afetados por erros de análise e o quanto eles representam da carga de trabalho total. Às vezes, podem ocorrer erros de análise devido a problemas de codificação ou porque a carga de trabalho precisa de alguma preparação.
Taxa de conversão de código: A taxa de conversão é a porcentagem do código-fonte total que foi convertido com sucesso pelo SnowConvert em um código Snowflake funcionalmente equivalente. Toda vez que a ferramenta identificar elementos não suportados, ou seja, fragmentos no código-fonte de entrada que não foram convertidos no Snowflake, isso afetará a taxa de conversão.
Objetos identificados: A contagem de todos os objetos DDL de nível superior (tabela, exibição, procedimento, etc.) que o SnowConvert identificou. Se houvesse um erro de análise em um objeto, ele não seria um objeto identificado. \ Exemplo: Os primeiros objetos da linha nº 1 à linha nº 6. Evidentemente, há um erro de análise, portanto, o SnowConvert não consegue identificar isso como um objeto.
Modos de taxa de conversão¶
Conforme mencionado anteriormente, quando um elemento é marcado como não suportado (devido a erros de análise ou porque não há suporte para ele no Snowflake), a taxa de conversão será punida. A quantidade da taxa de conversão que é punida para cada elemento não suportado depende da unidade de código selecionada; há duas unidades disponíveis: caracteres ou linhas.
Taxa de conversão usando caracteres de código¶
Quando caracteres de código são selecionados, a quantidade total de caracteres na origem de entrada representará as unidades gerais a serem convertidas. Portanto, se houver 100 caracteres no total e houver apenas um elemento não compatível com 10 caracteres, a taxa de conversão será de 90%. A taxa de conversão usando caracteres é mais precisa porque somente os caracteres pertencentes aos elementos não suportados são punidos, mas é mais difícil de calcular e entender manualmente.
Taxa de conversão usando linhas de código¶
Quando linhas de código são escolhidas (opção padrão), o número de linhas de código no código-fonte de entrada representará as unidades gerais a serem convertidas, e as linhas que contêm elementos não suportados serão inteiramente consideradas como unidades de código não suportadas. Portanto, se o mesmo código de entrada com esses 100 caracteres for dividido em 5 linhas de código e o elemento não suportado estiver em apenas uma linha, a taxa de conversão será 80%; a linha inteira que contém o elemento não suportado também é considerada não suportada. A taxa de conversão usando linhas é mais fácil de acompanhar, mas é menos precisa porque linhas inteiras de código contendo elementos não suportados são punidas (mesmo que haja outros elementos suportados na mesma linha).
O próximo exemplo mostra como a taxa de conversão é calculada usando ambas as métricas.
Exemplo de taxa de conversão¶
Código-fonte de entrada
--Comment123
CREATE TABLE Table1(
Prefix_Employee_Name CHAR(25),
!ERROR_Col,
Prefix_Employee_Sal DECIMAL(8))
O código acima tem exatamente 100 caracteres de código porque espaços em branco e quebras de linha não são considerados caracteres de código. O comentário acima de Table1
pertence à tabela e faz parte desses 100 caracteres. Esse é o código de saída que o SnowConvert gera para essa entrada.
Código-fonte de saída
--Comment123
CREATE OR REPLACE TABLE Table1 (
Prefix_Employee_Name CHAR(25)
-- ,
-- ** SSC-EWI-0001 - UNRECOGNIZED TOKEN ON LINE '4' COLUMN '2' OF THE SOURCE CODE STARTING AT '!'. EXPECTED 'Column Definition' GRAMMAR. LAST MATCHING TOKEN WAS ',' ON LINE '3' COLUMN '31'. FAILED TOKEN WAS '!' ON LINE '4' COLUMN '2'. CODE '15'. **
-- !ERROR_Col
,
Prefix_Employee_Sal DECIMAL(8))
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"teradata"}}'
;
A segunda coluna da tabela tem um erro de análise e, portanto, esse é um elemento não suportado. Vamos dar uma olhada em como a taxa de conversão é punida usando as duas unidades disponíveis.
Taxa de conversão usando caracteres de código¶
Aqui está o detalhamento dos caracteres no código de entrada
--Comment123 /*12 code characters*/
CREATE TABLE Table1( /*18 code characters*/
Prefix_Employee_Name CHAR(25), /*29 code characters*/
!ERROR_Col, /*11 code characters*/
Prefix_Employee_Sal DECIMAL(8)) /*30 code characters*/
Quantidade total de caracteres de código: 100
Caracteres de código em elementos não suportados: 10
Resultado: 90,00%
Nota
Observe que há 11 caracteres na 4ª linha, mas apenas 10 estão marcados como não suportados. Isso se deve à forma como o mecanismo de recuperação de análise funciona. Quando o analisador encontrar um erro, ele considerará todos os caracteres seguintes, até o próximo caractere delimitador, nesse caso a vírgula (“,”), como parte do erro. Isso significa que a quantidade de caracteres não suportados em qualquer código de entrada pode depender muito do tipo de erros de análise. Em alguns casos, o analisador será capaz de se recuperar perto de onde está o erro real, mas, infelizmente, em outros casos, muito código pode ser engolido pelo erro.
Taxa de conversão usando linhas de código¶
A taxa de conversão que usa linhas de código como unidades é muito mais simples de calcular.
Quantidade total de linhas de código: 5
Linhas de código com elementos não suportados: 1
Resultado: 80%
A taxa de conversão de LOC depende de como o código é formatado¶
Ao usar linhas de código como unidade, a taxa de conversão dependerá muito de como o código de entrada está formatado. Por exemplo, os dois exemplos de código a seguir são equivalentes, mas no primeiro caso todo o código é colocado na mesma linha e no segundo caso o código é dividido em 5 linhas de código
SELECT col1, !error_col FROM table1;
```
```none
SELECT
col1,
!error_col
FROM
table1;
Observe que a segunda coluna que está sendo referenciada em SELECT apresenta um erro porque começa com um caractere inválido. No primeiro caso, como todo o código está na mesma linha, a taxa de conversão será de 0%. Mas no segundo caso, como o código é dividido, apenas uma linha de código é punida e, portanto, a taxa de conversão será de 80%.
Diferenças na taxa de conversão¶
Pode haver diferenças nos resultados de conversão na mesma migração entre sistemas operacionais diferentes.
Isso ocorre porque, na maioria das vezes, o Microsoft Windows usa a quebra de linha CRLF em seus arquivos. Esse formato usa os caracteres \r\n
, mas UNIX OS apenas \n
(LF). \ Devido a essa diferença de formato, quando nosso processador de código estiver lendo os arquivos de entrada, ele contará o formato CRLF como dois caracteres e apenas um nos arquivos LF. Essas diferenças de contagem geram resultados diferentes nas taxas de conversão, especificamente, nas expressões de cadeia de caracteres presentes em seu código.
Para evitar esse problema, você pode usar o Visual Studio Code ou ferramentas semelhantes para alterar o formato de quebra de linha.
Detalhamento em nível de arquivo e de objeto¶
SQL - Arquivos¶
Arquivo |
Taxa de conversão |
Linhas de código |
Quantidade total de objetos |
Erros de análise |
---|---|---|---|---|
SQL |
42% |
20 |
2 |
3 |
Nessa seção, você obterá as informações gerais de resumo da avaliação de todos os arquivos SQL
Taxa de conversão de código: Esta é uma estimativa da taxa de conversão com base nos caracteres dos arquivos SQL fornecidos.
Linha de código: A contagem das linhas de código dos arquivos SQL fornecidos.
Total Object Quantity: A contagem do total de objetos identificados dos arquivos SQL fornecidos.
Erros de análise: A contagem do total de erros de análise dos arquivos SQL fornecidos.
Aviso
Os objetos não reconhecidos também serão contados como erros de análise da seção de Arquivos SQL
Aviso
A taxa de conversão do código pode ser diferente da taxa de conversão identificada, pois ela também considera os objetos não reconhecidos.
SQL - Objetos identificados¶
Objeto |
Taxa de conversão |
Linhas de código |
Quantidade total de objetos |
Erros de análise |
---|---|---|---|---|
Tabelas |
67% |
5 |
1 |
1 |
Exibições |
57% |
7 |
1 |
1 |
Procedimentos |
- |
0 |
0 |
0 |
Funções |
N/A |
N/A |
N/A |
N/A |
Nota
Se N/A estiver listado na tabela acima, isso significa que o tipo de objeto não é compatível com o Snowflake, provavelmente por motivos arquitetônicos. Esses objetos são comentados no código gerado e não afetam a taxa de conversão.
Nota
Se o campo de Taxa de conversão tiver um «-», isso significa que o conjunto atual de arquivos que você migrou não contém nenhuma instância do objeto especificado.
Nessa seção, você obterá as informações de avaliação de todos os objetos identificados, divididos pelos objetos DDL, como tabelas, visualizações, procedimentos etc.
Aviso
Se houver um código em que o analisador não conseguiu lidar com ele, o objeto inteiro será contabilizado como Unrecognized Object, e, portanto, não será exibido aqui
Taxa de conversão de código: Essa é uma estimativa da taxa de conversão com base nos caracteres dos objetos identificados, como tabela, exibição, procedimento etc.
Linha de código: A contagem das linhas de código de cada tipo de objeto identificado.
Quantidade total de objetos: A contagem de cada tipo de objeto identificado.
Erros de análise: A contagem dos erros de análise que ocorreram em cada tipo de objeto identificado.
Exemplo: Para as duas tabelas que temos no código-fonte, um é um objeto não reconhecido e outro é identificado com sucesso. A taxa de conversão dessa tabela de 5 linhas de código é de 75% devido a um erro de análise.
Detalhamento dos problemas¶
Nessa página, você obterá o número de problemas exclusivos e a lista de problemas ordenados por gravidade em ordem descendente
Por exemplo, para o código-fonte fornecido, temos dois problemas críticos relacionados a erros de análise e um problema de gravidade média relacionado à função Not supported.
Nota
Somente os erros com gravidade Média/Alta/Crítica afetarão a taxa de conversão atual. Os avisos são apenas informativos.