SnowConvert AI - Problemas do BigQuery¶
Nota
Escopo de conversão
O SnowConvert AI para Google BigQuery atualmente é compatível com avaliação e tradução de TABLES e VIEWS. Embora o SnowConvert AI possa reconhecer outros tipos de instruções, elas não são totalmente compatíveis.
Esta página fornece uma referência abrangente de como o SnowConvert AI traduz elementos de gramática do Google BigQuery para equivalentes do Snowflake. Nesta referência de tradução, você encontrará exemplos de código, resultados de equivalência funcional, principais diferenças, recomendações, problemas conhecidos e descrições de cada transformação.
SSC-EWI-BQ0001¶
O Snowflake não é compatível com a cláusula de opções.
Aviso
Este EWI está obsoleto; consulte SSC-EWI-0016 para obter a versão mais recente deste EWI.
Severidade ¶
Medium
Descrição ¶
Este EWI é adicionado a instruções DDL quando o OPTIONS não tem opções compatíveis com o Snowflake.
Exemplo de código ¶
Código de entrada:
BigQuery¶
Código de saída:
Snowflake¶
Recomendações ¶
Adicione alterações manuais à expressão não transformada.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-BQ0002¶
O microparticionamento é realizado automaticamente em todas as tabelas Snowflake.
Nota
Este problema está obsoleto e não é mais gerado pelo SnowConvert AI
Gravidade¶
Média
Descrição¶
Este aviso é adicionado a Create table quando a cláusula partition by está presente. PARTITION BY é uma cláusula opcional que controla o particionamento de tabela, mas não é compatível com o Snowflake.
Todos os dados nas tabelas Snowflake são automaticamente divididos em micropartições, que são unidades de armazenamento contíguas. Cada micropartição contém entre 50 MB e 500 MB de dados não comprimidos. Este tamanho e estrutura permitem a remoção extremamente granular em tabelas muito grandes, que podem ser compostas de milhões, ou mesmo centenas de milhões, de micropartições.
O Snowflake armazena metadados sobre todas as linhas armazenadas em uma micropartição, inclusive:
O intervalo de valores para cada uma das colunas na micropartição.
O número de valores distintos.
Propriedades adicionais utilizadas tanto para otimização quanto para o processamento eficiente de consultas.
As tabelas são particionadas de forma transparente usando a ordenação dos dados à medida que são inseridos/carregados. Para obter mais informações, consulte Benefícios do microparticionamento.
Exemplo de código¶
Código de entrada:¶
BigQuery¶
Código gerado:¶
Snowflake¶
Recomendações¶
Nenhuma ação adicional do usuário é necessária; ele é apenas informativo.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-BQ0003¶
Pending SnowConvert AI translation for differential privacy.
Gravidade¶
Medium
Descrição¶
BigQuery allows applying differential privacy over some statistical functions to introduce noise in the data, making it difficult to extract information about individuals when analyzing query results.
Snowflake now supports differential privacy natively. However, SnowConvert AI has not yet implemented the translation for this feature. Any use of differential privacy in BigQuery will be commented out and this issue will be generated to flag the need for manual conversion.
Exemplo de código¶
Código de entrada:¶
BigQuery¶
Código gerado:¶
Snowflake¶
Recomendações¶
Use native Snowflake support: Snowflake now supports differential privacy natively. Rewrite the BigQuery differential privacy syntax using Snowflake’s privacy policies and privacy budgets.
Key differences: Snowflake’s differential privacy implementation uses privacy policies assigned to tables/views, privacy budgets to manage analyst queries, and privacy domains for fact and dimension columns. The syntax differs from BigQuery’s inline
WITH DIFFERENTIAL_PRIVACYclause.Further reading: Snowflake Differential Privacy Overview
SSC-EWI-BQ0004¶
O Snowflake não é compatível com janelas nomeadas.
Gravidade¶
Medium
Descrição¶
O BigQuery permite a definição e o uso de janelas nomeadas em funções agregadas, elas são definidas na cláusula WINDOW da consulta em que são usadas e podem ser usadas dentro da cláusula OVER destas funções.
O Snowflake não é compatível com a declaração de janelas nomeadas. Considere usar a definição da janela e aplicá-la a todos os usos dessa janela diretamente na cláusula OVER das funções.
Exemplo de código¶
Código de entrada:¶
BigQuery¶
Código gerado:¶
Snowflake¶
Recomendações¶
Revise suas definições de janela nomeada; talvez seja possível usar a definição e aplicá-la à cláusula
OVERdas funções em que é utilizada. No entanto, tenha em mente as diferenças funcionais entre quadros de janela do BigQuery e do Snowflake ainda se aplicam, considere o seguinte caso como exemplo:
BigQuery:
Snowflake:
Estas duas consultas produzirão as mesmas linhas, mas os resultados do Snowflake não serão ordenados, isto porque a cláusula ORDER BY para quadros de janela não afeta toda a ordenação da consulta como faz no BigQuery.
SSC-EWI-BQ0005¶
Javascript code has not been validated by SnowConvert AI.
Gravidade¶
High
Descrição¶
O SnowConvert AI não transforma o código Javascript. Como o código Javascript extraído das funções do BigQuerynão foram alteradas, esse código pode precisar de alguns ajustes para funcionar no Snowflake.
Exemplo de código¶
Código de entrada:¶
BigQuery¶
Código gerado:¶
Snowflake¶
Recomendações¶
Revise todo o código Javascript antes da implementação.
Os parâmetros Javascript no Snowflake devem ser em maiúsculas.
For more information, visit Snowflake’s Introduction to Javascript UDFs.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-BQ0006¶
O parâmetro orientado na função ST_GEOGFROMTEXT não é compatível com o Snowflake.
Gravidade¶
Low
Descrição¶
Este aviso é adicionado quando o parâmetro orientado é especificado na função ST_GEOGFROMTEXT, porque não é compatível com o Snowflake. Se este parâmetro for definido como TRUE, presume-se que qualquer polígono na entrada é orientado da seguinte forma: se alguém caminha ao longo do limite do polígono na ordem dos vértices de entrada, o interior do polígono será para a esquerda. Isto permite que WKT represente polígonos maiores que um fuso horário. Se o orientado é FALSE ou omitido, esta função retorna o polígono com a menor área.
Exemplo de código¶
Código de entrada:¶
BigQuery¶
Código gerado:¶
Snowflake¶
Recomendações¶
Review polygon orientation: If the
orientedparameter was set toTRUE, verify that the polygon does not span more than a hemisphere. Snowflake’sST_GEOGFROMTEXTalways returns the polygon with the smallest area.Manual validation: For polygons larger than a hemisphere, consider splitting them into smaller polygons or using alternative geospatial representations.
Remove the parameter: After manual review, remove the
orientedparameter from the function call, as Snowflake’sST_GEOGFROMTEXTaccepts only the WKT string argument.
SSC-EWI-BQ0007¶
A sequência de escape não é válida no Snowflake.
Gravidade¶
Low
Descrição¶
O caractere de sino (\a) e o caractere vertical (\v) são sequências de escape válidas no BigQuery, mas não no Snowflake.
This warning is added when a bell character or vertical character escape sequence is found when translating BigQuery code. For more information, see BigQuery Escape Sequences.
Exemplo de código¶
Código de entrada:¶
BigQuery¶
Código gerado:¶
Snowflake¶
Recomendações¶
Replace with Unicode escapes: Replace
\a(bell character, U+0007) with\x07and\v(vertical tab, U+000B) with\x0B, which are supported by Snowflake.Review usage: If the escape sequence was used for formatting purposes, consider whether it is still needed in the Snowflake context.
SSC-EWI-BQ0008¶
A sequência de escape Unicode de oito dígitos hexadecimais não é compatível com o Snowflake.
Gravidade¶
Low
Descrição¶
O BigQuery é compatível com sequências Unicode de 8 dígitos hexadecimais. O Snowflake não é compatível com este tipo de sequências Unicode.
Este aviso é adicionado quando uma sequência Unicode de 8 dígitos hexadecimais é encontrada ao traduzir código do BigQuery. Mais sobre Sequências de escape do BigQuery.
Exemplo de código¶
Código de entrada:¶
BigQuery¶
Código gerado:¶
Snowflake¶
Recomendações¶
Use surrogate pairs: Convert the 8-hex-digit Unicode sequence into two 4-hex-digit surrogate pair sequences. For example,
\U00100000can be represented using surrogate pairs\uDBC0\uDC00.Use CHR function: Alternatively, use Snowflake’s
CHRfunction with the Unicode code point to generate the character at runtime.
SSC-EWI-BQ0009¶
SnowConvert AI was unable to generate the correct return table clause. Missing symbol information.
Gravidade¶
High
Descrição¶
O Snowflake requer uma cláusula RETURNS TABLE válida para instruções CREATE TABLE FUNCTION. O SnowConvert AI tem que construir uma nova a partir do zero. Para isso, é feita uma análise na consulta CREATE TABLE FUNCTION para inferir corretamente os tipos das colunas da tabela resultante; no entanto, pode haver cenários em que o SnowConvert AI atualmente tem uma limitação para poder construir a cláusula de retorno corretamente.
Estes cenários serão considerados no futuro, mas, enquanto isso, este erro será adicionado.
Exemplo de código¶
Código de entrada:¶
BigQuery¶
Código gerado:¶
Snowflake¶
Recomendações¶
Manually define the RETURNS TABLE clause: Inspect the original BigQuery TABLE FUNCTION body to determine the column names and types of the result set, then populate the empty
RETURNS TABLE()clause with the correct column definitions.Provide source references: If the issue is caused by missing references, ensure all referenced tables and views are included in the input provided to SnowConvert AI.
SSC-EWI-BQ0010¶
The resulting table has no columns
Gravidade¶
Medium
Descrição¶
This EWI is added when SnowConvert AI creates an external table whose definition has no columns. External tables in BigQuery can be defined using only OPTIONS (e.g., FORMAT and URIS) without explicit column definitions, relying on schema inference. When the resulting table structure has no columns after conversion, SnowConvert AI emits this EWI to flag that manual definition of the table schema may be required.
Exemplo de código¶
Código de entrada:¶
BigQuery¶
Código gerado:¶
Snowflake¶
Recomendações¶
Provide column definitions: If the source BigQuery external table uses inferred schema, manually add the expected column definitions to the generated Snowflake external table based on the actual file structure.
Use INFER_SCHEMA: Consider using Snowflake’s INFER_SCHEMA function with a sample file path (without wildcards) to generate the table template.
Include table definitions: Ensure all referenced table or view definitions are included in the input provided to SnowConvert AI so that symbol information can be collected.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-BQ0011¶
A atribuição de variável de sessão de tipo de dados complexo não é compatível com o Snowflake
Gravidade¶
Medium
Descrição¶
No BigQuery, a declaração de uma variável no nível do script permite que ela seja usada em todo o script para replicar esse comportamento no Snowflake. Variáveis SQL são usadas.
Entretanto, a declaração de variáveis de tipos de dados complexos como ARRAY, GEOGRAPHY, STRUCT ou JSON falhará no Snowflake ao tentar definir o valor para a variável SQL. Quando o SnowConvert AI detecta um desses casos, este EWI será adicionado à declaração de variável SQL.
Variáveis desses tipos podem ser declaradas sem problemas dentro de instruções de bloco e outras instruções processuais. Este EWI aplica-se somente a variáveis declaradas no nível do script.
Exemplo de código¶
Código de entrada:¶
BigQuery¶
Código gerado:¶
Snowflake¶
Recomendações¶
Se os usos da variável estiverem limitados a um único escopo ou seu valor nunca for modificado, considere declarar a variável localmente nos escopos que a utilizam, isso resolverá o problema.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-BQ0012¶
SnowConvert AI was unable to generate a correct OBJECT_CONSTRUCT parameter. Missing symbol information.
Gravidade¶
High
Descrição¶
SnowConvert AI was unable to generate a correct OBJECT_CONSTRUCT parameter due to missing symbol information. This typically occurs when the table definition is not included in the input provided to SnowConvert AI, or when the table uses complex types (such as STRUCT) whose field names are needed to build the OBJECT_CONSTRUCT call.
Exemplo de código¶
Código de entrada:¶
BigQuery¶
Código gerado:¶
Snowflake¶
Recomendações¶
Provide table definitions: Ensure all referenced table definitions (CREATE TABLE statements) are included in the input provided to SnowConvert AI so that symbol information can be collected.
Manual replacement: Inspect the original BigQuery INSERT statement and manually construct the
OBJECT_CONSTRUCTcall with the correct field names and values matching the target table’s schema.
SSC-EWI-BQ0013¶
O formato de dados da tabela externa é incompatível com o Snowflake
Aviso
Este EWI está obsoleto; consulte SSC-EWI-0029 para obter a versão mais recente deste EWI.
Gravidade¶
Medium
Descrição¶
O Snowflake é compatível com os seguintes formatos do BigQuery:
BigQuery |
Snowflake |
|---|---|
AVRO |
AVRO |
CSV |
CSV |
NEWLINE_DELIMITED_JSON |
JSON |
ORC |
ORC |
PARQUET |
PARQUET |
When an external table has other FORMAT not specified in the above table, this EWI will be generated to inform the user that the FORMAT is not supported.
Exemplo de código¶
Código de entrada:¶
BigQuery¶
Código gerado:¶
Snowflake¶
Recomendações¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-BQ0014¶
Hive partitioned external tables are not supported in Snowflake
Gravidade¶
Medium
Descrição¶
O Snowflake não é compatível com tabelas externas particionadas do Hive. Quando a cláusula WITH PARTITION COLUMNS for encontrada na tabela externa, ela será marcada como incompatível usando este EWI.
Exemplo de código¶
Código de entrada:¶
BigQuery¶
Código gerado:¶
Snowflake¶
Recomendações¶
Remove the WITH PARTITION COLUMNS clause: Snowflake external tables use automatic partitioning based on the file path. Remove the
WITH PARTITION COLUMNSclause from the generated code.Use Snowflake partitioning: Define partition columns using expressions in the external table’s column definitions. Snowflake can automatically infer partition columns from the directory structure.
Hive metastore integration: If you use a Hive metastore, consider integrating it with Snowflake to synchronize external table metadata automatically.
SSC-EWI-BQ0015¶
External table requires an external stage to access an external location, define and replace the EXTERNAL_STAGE placeholder
Aviso
Este EWI está obsoleto; consulte SSC-EWI-0032 para obter a versão mais recente deste EWI.
Descrição¶
Ao transformar a instrução CREATE EXTERNAL TABLE, o SnowConvert AI vai gerar um espaço reservado EXTERNAL_STAGE, que precisa ser substituído pela área de preparação externa criada para conexão com a localização externa pelo Snowflake.
Consulte os seguintes guias para configurar a integração de armazenamento e a área de preparação externa necessários em sua conta Snowflake:
Para tabelas externas que fazem referência ao Google Cloud Storage
Para tabelas externas que fazem referência ao Armazenamento de blobs Azure
Exemplo de código¶
Código de entrada:¶
BigQuery¶
Código gerado:¶
Snowflake¶
CREATE OR REPLACE EXTERNAL TABLE test.Employees_test
(
Employee_id INTEGER AS CAST(GET_IGNORE_CASE($1, 'c1') AS INTEGER),
Name STRING AS CAST(GET_IGNORE_CASE($1, 'c2') AS STRING),
Mail STRING AS CAST(GET_IGNORE_CASE($1, 'c3') AS STRING),
Position STRING AS CAST(GET_IGNORE_CASE($1, 'c4') AS STRING),
Salary INTEGER AS CAST(GET_IGNORE_CASE($1, 'c5') AS INTEGER)
)
!!!RESOLVE EWI!!! /*** SSC-EWI-BQ0015 - EXTERNAL TABLE REQUIRES AN EXTERNAL STAGE TO ACCESS gs://sc_external_table_bucket, DEFINE AND REPLACE THE EXTERNAL_STAGE PLACEHOLDER ***/!!!
LOCATION = @EXTERNAL_STAGE
AUTO_REFRESH = false
PATTERN = 'folder_with_csv/Employees.csv'
FILE_FORMAT = (TYPE = CSV SKIP_HEADER =1);
Recomendações¶
Configure sua conexão externa na conta Snowflake e substitua o espaço reservado EXTERNAL_STAGE para concluir a transformação.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-BQ0016¶
Selecionar * com vários operadores UNNEST produzirá ambiguidade na coluna
Aviso
This EWI is deprecated; please refer to SSC-FDM-0012 for the latest version of this issue.
Gravidade¶
Medium
Descrição¶
Como parte da transformação do SnowConvert para o operador UNNEST, a função FLATTEN é usada, a qual gera várias colunas que não são necessárias para emular a funcionalidade do operador UNNEST, como as colunas THIS ou PATH.
Quando um SELECT * com o operador UNNEST for encontrado, o SnowConvert removerá as colunas desnecessárias usando a palavra-chave EXCLUDE; no entanto, quando vários operadores UNNEST são usados na mesma instrução, as colunas não podem ser removidas devido a problemas de ambiguidade. Este EWI será gerado para marcar tais casos.
Recomenda-se expandir a lista de expressões SELECT para especificar apenas as colunas esperadas e resolver esse problema.
Exemplo de código¶
Código de entrada:¶
BigQuery¶
Código gerado:¶
Snowflake¶
SSC-EWI-BQ0017¶
Pending SnowConvert AI translation for UNNEST of an array of structs
Gravidade¶
Medium
Descrição¶
When unnesting an array of structs, BigQuery generates a column for each struct field and splits the struct values into their corresponding columns. SnowConvert AI does not yet support this transformation. Whenever SnowConvert AI detects that the UNNEST operator is applied over an array of structs, this EWI is generated to flag the need for manual conversion.
Exemplo de código¶
Código de entrada:¶
BigQuery¶
Código gerado:¶
Snowflake¶
Recomendações¶
Use FLATTEN with LATERAL: Manually flatten the array column using Snowflake’s FLATTEN function, then extract individual struct fields using dot notation or
GETon theVALUEcolumn.Example workaround: