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
 CREATE VIEW my_view
OPTIONS (
  expiration_timestamp=TIMESTAMP "2026-01-01 00:00:00 UTC",
  privacy_policy='{"aggregation_threshold_policy": {"threshold": 50, "privacy_unit_columns": "ID"}}'
) AS
SELECT column1, column2
FROM my_table;
Copy

Código de saída:

Snowflake
 CREATE VIEW my_view
!!!RESOLVE EWI!!! /*** SSC-EWI-BQ0001 - SNOWFLAKE DOES NOT SUPPORT THE OPTIONS: EXPIRATION_TIMESTAMP, PRIVACY_POLICY ***/!!!
OPTIONS(
  expiration_timestamp=TIMESTAMP "2026-01-01 00:00:00 UTC",
  privacy_policy='{"aggregation_threshold_policy": {"threshold": 50, "privacy_unit_columns": "ID"}}'
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "bigquery",  "convertedOn": "03/26/2025",  "domain": "test" }}'
AS
SELECT column1, column2
FROM
  my_table;
Copy
Recomendações

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
 CREATE TABLE table1(
    transaction_id INT, 
    transaction_date DATE
)
PARTITION BY transaction_date;
Copy
Código gerado:
Snowflake
 CREATE TABLE table1 (
    transaction_id INT,
  transaction_date DATE
)
!!!RESOLVE EWI!!! /*** SSC-EWI-BQ0002 - MICRO-PARTITIONING IS AUTOMATICALLY PERFORMED ON ALL SNOWFLAKE TABLES. ***/!!!
PARTITION BY transaction_date
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "bigquery",  "convertedOn": "04/09/2025",  "domain": "test" }}';
Copy

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

O Snowflake não é compatível com privacidade diferencial.

Gravidade

Medium

Descrição

O BigQuery permite aplicar privacidade diferencial a algumas funções estatísticas para introduzir ruído nos dados, dificultando a subtração de informações sobre os indivíduos ao analisar os resultados da consulta.

A privacidade diferencial não é compatível com o Snowflake; qualquer uso dela será como comentário e este erro será gerado para informar o usuário sobre isso.

Exemplo de código

Código de entrada:
BigQuery
 SELECT
  WITH DIFFERENTIAL_PRIVACY
    OPTIONS(epsilon=10, delta=.01, max_groups_contributed=2, privacy_unit_column=id)
    item,
    COUNT(quantity, contribution_bounds_per_group => (0,100)) total_quantity
FROM professors
GROUP BY item;
Copy
Código gerado:
Snowflake
 SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-BQ0003 - SNOWFLAKE DOES NOT SUPPORT DIFFERENTIAL PRIVACY. ***/!!!
  WITH DIFFERENTIAL_PRIVACY
    OPTIONS(epsilon=10, delta=.01, max_groups_contributed=2, privacy_unit_column=id)
    item,
    COUNT(quantity,
                    !!!RESOLVE EWI!!! /*** SSC-EWI-BQ0003 - SNOWFLAKE DOES NOT SUPPORT DIFFERENTIAL PRIVACY. ***/!!! contribution_bounds_per_group => (0,100)) total_quantity
FROM
  professors
GROUP BY item;
Copy

Recomendações

  • Analise os resultados da consulta com e sem privacidade diferencial; os resultados podem diferir ligeiramente devido à ausência de ruído nos dados.

  • Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com

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
 SELECT 
    COUNT(col1) OVER(myWindow)
FROM 
    test.exampleTable
WINDOW 
    myWindow AS (ORDER BY col2);
Copy
Código gerado:
Snowflake
 SELECT
    COUNT(col1)
    !!!RESOLVE EWI!!! /*** SSC-EWI-BQ0004 - SNOWFLAKE DOES NOT SUPPORT NAMED WINDOWS. ***/!!! OVER(myWindow)
FROM
    test.exampleTable
!!!RESOLVE EWI!!! /*** SSC-EWI-BQ0004 - SNOWFLAKE DOES NOT SUPPORT NAMED WINDOWS. ***/!!!
WINDOW
    myWindow AS (ORDER BY col2);
Copy

Recomendações

  • Revise suas definições de janela nomeada; talvez seja possível usar a definição e aplicá-la à cláusula OVER das 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:

 SELECT 
    COUNT(col1) OVER(myWindow)
FROM 
    test.exampleTable
WINDOW 
    myWindow AS (ORDER BY col2);
Copy

Snowflake:

 SELECT 
    COUNT(col1) OVER(ORDER BY col2)
FROM 
    test.exampleTable;
Copy

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.

Recomendações

SSC-EWI-BQ0005

O código Javascript não foi validado.

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
 CREATE FUNCTION test.languageJs (x integer, y integer)
RETURNS integer
LANGUAGE js
AS "return x * y;";
Copy
Código gerado:
Snowflake
 CREATE FUNCTION test.languageJs (x integer, y integer)
RETURNS DOUBLE
LANGUAGE JAVASCRIPT
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "bigquery",  "convertedOn": "07/16/2025",  "domain": "no-domain-provided" }}'
!!!RESOLVE EWI!!! /*** SSC-EWI-BQ0005 - JAVASCRIPT CODE HAS NOT BEEN VALIDATED. ***/!!!
AS
$$
return x * y;
$$;
Copy

Recomendações

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
 SELECT ST_GEOGFROMTEXT('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))', TRUE);
Copy
Código gerado:
Snowflake
 SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-BQ0006 - ORIENTED PARAMETER IN THE ST_GEOGFROMTEXT FUNCTION IS NOT SUPPORTED IN SNOWFLAKE. ***/!!!
 ST_GEOGFROMTEXT('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))');
Copy

Recomendações

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.

Este aviso é adicionado quando uma sequência de escape de caractere de sino ou caractere vertical é encontrada ao traduzir código do BigQuery. Mais sobre as Sequências de escape do Snowflake.

Exemplo de código

Código de entrada:
BigQuery
 SELECT "\a";
SELECT "\v";
Copy
Código gerado:
Snowflake
 SELECT
    !!!RESOLVE EWI!!! /*** SSC-EWI-BQ0007 - ESCAPE SEQUENCE \a IS NOT VALID IN SNOWFLAKE. ***/!!!
    '\a';
SELECT
    !!!RESOLVE EWI!!! /*** SSC-EWI-BQ0007 - ESCAPE SEQUENCE \v IS NOT VALID IN SNOWFLAKE. ***/!!!
    '\v';
Copy

Recomendações

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:
Snowflake
 SELECT "\U00100000";
Copy
Código gerado:
Primeira guia
 SELECT
    !!!RESOLVE EWI!!! /*** SSC-EWI-BQ0008 - EIGHT HEX DIGIT UNICODE ESCAPE SEQUENCE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
    '\U00100000';
Copy

Recomendações

SSC-EWI-BQ0009

O SnowConvert AI não pôde gerar a cláusula de tabela de retorno correta.

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
 CREATE TABLE FUNCTION tableValueFunction2()
AS
SELECT *
REPLACE("John" AS employee_name)
FROM employees;
Copy
Código gerado:
Snowflake
 CREATE FUNCTION tableValueFunction2 ()
!!!RESOLVE EWI!!! /*** SSC-EWI-BQ0009 - SnowConvert AI WAS UNABLE TO GENERATE THE CORRECT RETURN TABLE CLAUSE, DUE TO MISSING REFERENCES. ***/!!!
RETURNS TABLE (
)
AS
  $$
      SELECT
        * REPLACE("John" AS employee_name) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'ExceptReplaceOperator' NODE ***/!!!
      FROM
        employees
  $$;
Copy

Recomendações

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
 CREATE TABLE test.JsonTable
(
    col1 JSON
);

DECLARE myVar1 JSON DEFAULT JSON'{"name": "John", "age": 30}';

INSERT INTO test.JsonTable VALUES (myVar1);

BEGIN
    DECLARE myVar2 JSON DEFAULT JSON'{"name": "Mike", "age": 27}';
    INSERT INTO test.JsonTable VALUES (myVar2);
END;

SELECT col1 FROM test.JsonTable;
Copy
Código gerado:
Snowflake
 CREATE TABLE test.JsonTable
(
    col1 VARIANT
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "bigquery",  "convertedOn": "07/02/2025",  "domain": "no-domain-provided" }}';

!!!RESOLVE EWI!!! /*** SSC-EWI-BQ0011 - SESSION VARIABLE ASSIGNMENT OF COMPLEX DATATYPE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
SET myVar1 = (
    SELECT
        PARSE_JSON('{"name": "John", "age": 30}')
);

INSERT INTO test.JsonTable
VALUES ($myVar1);

BEGIN
    LET myVar2 VARIANT DEFAULT PARSE_JSON('{"name": "Mike", "age": 27}');
    INSERT INTO test.JsonTable
    VALUES (:myVar2);
END;

SELECT col1 FROM
    test.JsonTable;
Copy

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

Não é possível gerar parâmetros OBJECT_CONSTRUCT corretos

Gravidade

High

Descrição

O SnowConvert AI não está habilitado para gerar a construção de objeto correta porque o símbolo não é carregado corretamente.

Exemplo de código

Código de entrada:
BigQuery
 INSERT INTO test.tuple_sample
VALUES
  ((12, 34)),
  ((56, 78)),
  ((9, 99)),
  ((12, 35));
Copy
Código gerado:
Snowflake
 INSERT INTO test.tuple_sample
!!!RESOLVE EWI!!! /*** SSC-EWI-BQ0012 - UNABLE TO GENERATE CORRECT OBJECT_CONSTRUCT PARAMETER. SYMBOL INFORMATION COULD NOT BE COLLECTED. ***/!!!
VALUES
  ((12, 34)),
  ((56, 78)),
  ((9, 99)),
  ((12, 35));
Copy

Recomendações

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
GOOGLE_SHEETS

CSV

NEWLINE_DELIMITED_JSON
JSON

JSON

ORC

ORC

PARQUET

PARQUET

Quando uma tabela externa tem outro FORMAT não especificado na tabela acima, este EWI será gerado para informar ao usuário que o FORMAT não é compatível.

Exemplo de código

Código de entrada:
BigQuery
 CREATE OR REPLACE EXTERNAL TABLE test.backup_restore_table
OPTIONS (
  format = 'DATASTORE_BACKUP',
  uris = ['gs://backup_bucket/backup_folder/*']
);
Copy
Código gerado:
Snowflake
 !!!RESOLVE EWI!!! /*** SSC-EWI-BQ0013 - EXTERNAL TABLE DATA FORMAT NOT SUPPORTED IN SNOWFLAKE ***/!!!
CREATE OR REPLACE EXTERNAL TABLE test.backup_restore_table
OPTIONS (
  format = 'DATASTORE_BACKUP',
  uris = ['gs://backup_bucket/backup_folder/*']
);
Copy

Recomendações

SSC-EWI-BQ0014

As tabelas externas particionadas do Hive não são compatíveis com o 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
 CREATE EXTERNAL TABLE test.CustomHivePartitionedTable
WITH PARTITION COLUMNS (
  field_1 STRING,
  field_2 INT64)
OPTIONS (
  uris = ['gs://sc_external_table_bucket/folder_with_parquet/*'],
  format = 'PARQUET',
  hive_partition_uri_prefix = 'gs://sc_external_table_bucket/folder_with_parquet',
  require_hive_partition_filter = false);
Copy
Código gerado:
Snowflake
 CREATE OR REPLACE TEMPORARY FILE FORMAT SC_TEST_CUSTOMHIVEPARTITIONEDTABLE_FORMAT
TYPE = PARQUET;

CREATE EXTERNAL TABLE test.CustomHivePartitionedTable USING TEMPLATE (
SELECT
  ARRAY_AGG(OBJECT_CONSTRUCT('COLUMN_NAME', COLUMN_NAME, 'TYPE', TYPE, 'NULLABLE', NULLABLE, 'EXPRESSION', EXPRESSION))
FROM
  --** SSC-FDM-0035 - THE INFER_SCHEMA FUNCTION REQUIRES A FILE PATH WITHOUT WILDCARDS TO GENERATE THE TABLE TEMPLATE, REPLACE THE FILE_PATH PLACEHOLDER WITH IT **
  TABLE(INFER_SCHEMA(LOCATION => '@EXTERNAL_STAGE/FILE_PATH', FILE_FORMAT => 'SC_TEST_CUSTOMHIVEPARTITIONEDTABLE_FORMAT'))
)
!!!RESOLVE EWI!!! /*** SSC-EWI-0032 - 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
!!!RESOLVE EWI!!! /*** SSC-EWI-BQ0014 - HIVE PARTITIONED EXTERNAL TABLES ARE NOT SUPPORTED IN SNOWFLAKE ***/!!!
WITH PARTITION COLUMNS (
  field_1 STRING,
  field_2 INT64)
PATTERN = 'folder_with_parquet/.*'
FILE_FORMAT = (TYPE = PARQUET)
!!!RESOLVE EWI!!! /*** SSC-EWI-0016 - SNOWFLAKE DOES NOT SUPPORT THE OPTIONS: HIVE_PARTITION_URI_PREFIX, REQUIRE_HIVE_PARTITION_FILTER. ***/!!!
OPTIONS(
  hive_partition_uri_prefix = 'gs://sc_external_table_bucket/folder_with_parquet',
  require_hive_partition_filter = false
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": {  "major": 0,  "minor": 0,  "patch": "0" }, "attributes": {  "component": "bigquery",  "convertedOn": "07/02/2025",  "domain": "no-domain-provided" }}';
Copy

Recomendações

SSC-EWI-BQ0015

A tabela externa requer um estágio externo para acessar uma localização externa, definir e substituir o espaço reservado EXTERNAL_STAGE

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:

Exemplo de código

Código de entrada:
BigQuery
 CREATE OR REPLACE EXTERNAL TABLE test.Employees_test
(
  Employee_id INTEGER,
  Name STRING,
  Mail STRING,
  Position STRING,
  Salary INTEGER
)
OPTIONS(
  FORMAT='CSV',
  SKIP_LEADING_ROWS=1,
  URIS=['gs://sc_external_table_bucket/folder_with_csv/Employees.csv']
);
Copy
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

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
SELECT * FROM UNNEST ([10,20,30]);

SELECT * FROM UNNEST ([10,20,30]) AS numbers, UNNEST(['Hi', 'Hello', 'Bye']) AS words;
Copy
Código gerado:
Snowflake
SELECT
* EXCLUDE(SEQ, KEY, PATH, THIS, INDEX)
FROM
TABLE(FLATTEN(INPUT => [10,20,30])) AS F0_ (
SEQ,
KEY,
PATH,
INDEX,
F0_,
THIS
);

SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-BQ0016 - SELECT * WITH MULTIPLE UNNEST OPERATORS WILL RESULT IN COLUMN AMBIGUITY IN SNOWFLAKE ***/!!!
 * FROM
TABLE(FLATTEN(INPUT => [10,20,30])) AS numbers (
SEQ,
KEY,
PATH,
INDEX,
numbers,
THIS
),
TABLE(FLATTEN(INPUT => ['Hi', 'Hello', 'Bye'])) AS words (
SEQ,
KEY,
PATH,
INDEX,
words,
THIS
);
Copy

SSC-EWI-BQ0017

O desaninhamento de uma matriz de estruturas não é compatível

Gravidade

Medium

Descrição

Ao desaninhar uma matriz de estruturas, o BigQuery irá gerar uma coluna para cada campo de estrutura e dividir os valores de estrutura em suas colunas correspondentes, comportamento que não é compatível atualmente. Sempre que o SnowConvert detecta que o operador UNNEST é aplicado sobre uma matriz de estruturas, este EWI será gerado.

Exemplo de código

Código de entrada:
BigQuery
CREATE TABLE test.myTestTable
(
  column1 ARRAY<STRUCT<x INT64, y STRING, z STRUCT<a INT64, b INT64>>>
);

SELECT structValues FROM test.myTestTable AS someTable, UNNEST(someTable.column1) AS structValues;
Copy
Código gerado:
Snowflake
CREATE TABLE test.myTestTable
(
  column1 ARRAY DEFAULT []
);

SELECT structValues FROM
  test.myTestTable AS someTable,
  !!!RESOLVE EWI!!! /*** SSC-EWI-BQ0017 - UNNEST OF AN ARRAY OF STRUCTS IS NOT SUPPORTED ***/!!! UNNEST(someTable.column1) AS structValues;
Copy