SnowConvert AI - Problèmes BigQuery

Note

Portée de la conversion

SnowConvert AI pour Google BigQuery prend actuellement en charge l’évaluation et la traduction pour les TABLES et les VIEWS. Bien que SnowConvert AI puisse reconnaître d’autres types d’instructions, ces derniers ne sont pas complètement pris en charge.

Cette page fournit une référence complète sur la manière dont SnowConvert AI traduit les éléments de grammaire Google BigQuery en équivalents Snowflake. Dans cette référence de traduction, vous trouverez des exemples de code, des résultats d’équivalence fonctionnelle, des différences clés, des recommandations, des problèmes connus et des descriptions de chaque transformation.

SSC-EWI-BQ0001

Snowflake ne prend pas en charge la clause d’options.

Avertissement

Cet EWI est obsolète. Veuillez vous référer à SSC-EWI-0016 pour la dernière version de cet EWI.

Sévérité

Medium

Description

Cet EWI est ajouté aux instructions DDL lorsque les OPTIONS comprennent des options non prises en charge par Snowflake.

Exemple de code 

Code d’entrée :

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

Code de sortie :

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
Recommandations 
  • Ajoutez des modifications manuelles à l’expression non transformée.

  • Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.

SSC-EWI-BQ0002

Le micro-partitionnement est automatiquement effectué sur toutes les tables Snowflake.

Note

Ce problème est obsolète et n’est plus généré par SnowConvert AI.

Gravité

Medium

Description

Cet avertissement est ajouté à la table Create lorsque la clause Partition By est présente. PARTITION BY est une clause facultative qui contrôle le partitionnement des tables, mais qui n’est pas prise en charge dans Snowflake.

Toutes les données des tables Snowflake sont automatiquement divisées en micro-partitions qui sont des unités de stockage contiguës. Chaque micro-partition contient entre 50 MB et 500 MB de données non compressées. Cette taille et cette structure permettent « d’élaguer » granulairement de très grandes tables qui peuvent comprendre des millions, voire des centaines de millions, de micro-partitions.

Snowflake stocke les métadonnées de toutes les lignes stockées dans une micro-partition, y compris :

  • La plage de valeurs pour chacune des colonnes de la micro-partition.

  • Le nombre de valeurs distinctes.

  • Propriétés supplémentaires utilisées à la fois pour l’optimisation et le traitement efficace des requêtes.

De plus, les tables sont partitionnées de manière transparente en suivant l’ordre des données au fur et à mesure de leur insertion/chargement. Pour plus d’informations, veuillez consulter les [Avantages du micro-partitionnement](https://docs.snowflake.com/fr/user-guide/tables-clustering-micropartitions#benefins-of-micro-partitioninghttps://docs.snowflake. com/en/user-guide/tables-clustering-micropartitions#benedits-of-micro-partitioning).

Exemple de code

Code d’entrée :
BigQuery
 CREATE TABLE table1(
    transaction_id INT, 
    transaction_date DATE
)
PARTITION BY transaction_date;
Copy
Code généré :
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

Recommandations

  • Aucune action supplémentaire de la part de l’utilisateur n’est requise. Cette recommandation est simplement donnée à titre informatif.

  • Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.

SSC-EWI-BQ0003

Snowflake ne prend pas en charge la confidentialité différentielle.

Gravité

Medium

Description

BigQuery permet d’appliquer une confidentialité différentielle à certaines fonctions statistiques pour introduire du bruit dans les données, ce qui rend difficile la soustraction d’informations sur les personnes lors de l’analyse des résultats de la requête.

La confidentialité différentielle n’est pas prise en charge dans Snowflake. Toute utilisation sera commentée, et cette erreur sera générée pour en informer l’utilisateur.

Exemple de code

Code d’entrée :
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
Code généré :
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

Recommandations

  • Analysez les résultats de la requête avec et sans confidentialité différentielle. Les résultats peuvent différer légèrement en raison de l’absence de bruit dans les données.

  • Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.

SSC-EWI-BQ0004

Snowflake ne prend pas en charge les fenêtres nommées.

Gravité

Medium

Description

BigQuery permet de définir et d’utiliser des fenêtres nommées dans des fonctions d’agrégation. Elles sont définies dans la clause WINDOW de la requête. Elles sont utilisées (et peuvent l’être) à l’intérieur de la clause OVER de ces fonctions.

Snowflake ne prend pas en charge la déclaration de fenêtres nommées. Envisagez de prendre la définition de la fenêtre et de l’appliquer à toutes les utilisations de cette fenêtre directement dans la clause OVER des fonctions.

Exemple de code

Code d’entrée :
BigQuery
 SELECT 
    COUNT(col1) OVER(myWindow)
FROM 
    test.exampleTable
WINDOW 
    myWindow AS (ORDER BY col2);
Copy
Code généré :
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

Recommandations

  • Examinez les définitions de vos fenêtres nommées. Il se peut que vous puissiez prendre la définition et l’appliquer à la clause OVER des fonctions dans lesquelles elle est utilisée. Cependant, gardez à l’esprit que les différences fonctionnelles entre les cadres de fenêtre BigQuery et Snowflake continueront de s’appliquer. Considérez le cas suivant comme exemple :

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

Ces deux requêtes produiront les mêmes lignes, mais les résultats Snowflake ne seront pas ordonnés. En effet, la clause ORDER BY pour les cadres de fenêtre n’a pas d’impact sur l’ensemble de l’ordre des requêtes, comme cela est le cas dans BigQuery.

Recommandations

SSC-EWI-BQ0005

Le code Javascript n’a pas été validé.

Gravité

Élevé

Description

SnowConvert AI ne transforme pas le code Javascript. Étant donné que le code Javascript extrait des fonctions BigQuery n’a pas du tout été modifié, celui-ci pourrait avoir besoin de quelques ajustements pour fonctionner sur Snowflake.

Exemple de code

Code d’entrée :
BigQuery
 CREATE FUNCTION test.languageJs (x integer, y integer)
RETURNS integer
LANGUAGE js
AS "return x * y;";
Copy
Code généré :
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

Recommandations

  • Examinez l’ensemble du code Javascript avant le déploiement.

  • Les paramètres Javascript dans Snowflake doivent être en majuscules.

  • Pour plus d’informations, consultez la [Présentation des UDFs Javascript] de Snowflake(https://docs.snowflake.com/fr/developer-guide/udf/javascript/udf-javascript-introduction).

  • Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.

SSC-EWI-BQ0006

Le paramètre orienté dans la fonction ST_GEOGFROMTEXT n’est pas pris en charge dans Snowflake.

Gravité

Faible

Description

Cet avertissement est ajouté lorsque le paramètre orienté est spécifié dans la fonction ST_GEOGFROMTEXT, car il n’est pas pris en charge dans Snowflake. Si ce paramètre est défini sur TRUE, tout polygone dans l’entrée est supposé être orienté comme suit : si quelqu’un longe la limite du polygone dans l’ordre des sommets d’entrée, l’intérieur du polygone se trouve à gauche. Cela permet à WKT de représenter des polygones plus grands qu’un hémisphère. Si le paramètre orienté est défini sur FALSE ou omis, cette fonction renvoie le polygone avec la plus petite surface.

Exemple de code

Code d’entrée :
BigQuery
 SELECT ST_GEOGFROMTEXT('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))', TRUE);
Copy
Code généré :
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

Recommandations

SSC-EWI-BQ0007

La séquence d’échappement n’est pas valide dans Snowflake.

Gravité

Faible

Description

Le caractère Cloche (\a) et le caractère Vertical (\v) sont des séquences d’échappement valides dans BigQuery, mais pas dans Snowflake.

Cet avertissement est ajouté lorsqu’une séquence d’échappement d’un caractère Cloche ou Vertical est trouvée lors de la traduction du code BigQuery. En savoir plus sur les séquences d’échappement dans Snowflake.

Exemple de code

Code d’entrée :
BigQuery
 SELECT "\a";
SELECT "\v";
Copy
Code généré :
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

Recommandations

SSC-EWI-BQ0008

La séquence d’échappement Unicode à 8 chiffres hexadécimaux n’est pas prise en charge dans Snowflake.

Gravité

Faible

Description

BigQuery prend en charge les séquences Unicode à 8 chiffres hexadécimaux. Snowflake ne prend pas en charge ce type de séquences Unicode.

Cet avertissement est ajouté lorsqu’une séquence Unicode à 8 chiffres hexadécimaux est trouvée lors de la traduction du code BigQuery. En savoir plus sur les séquences d’échappement dans BigQuery.

Exemple de code

Code d’entrée :
Snowflake
 SELECT "\U00100000";
Copy
Code généré :
Premier onglet
 SELECT
    !!!RESOLVE EWI!!! /*** SSC-EWI-BQ0008 - EIGHT HEX DIGIT UNICODE ESCAPE SEQUENCE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
    '\U00100000';
Copy

Recommandations

SSC-EWI-BQ0009

SnowConvert AI n’a pas réussi à générer la clause de table de retour correcte.

Gravité

Élevé

Description

Snowflake requiert une clause RETURNS TABLE valide pour les instructions CREATE TABLE FUNCTION. SnowConvert AI doit en construire une nouvelle à partir de zéro. Pour ce faire, une analyse est effectuée sur la requête CREATE TABLE FUNCTION afin d’inférer correctement les types des colonnes de la table résultante. Cependant, il peut y avoir des scénarios où SnowConvert AI présente une limitation qui l’empêche de construire correctement la clause de retour.

Ces scénarios seront pris en compte à l’avenir, mais en attendant, cette erreur sera ajoutée.

Exemple de code

Code d’entrée :
BigQuery
 CREATE TABLE FUNCTION tableValueFunction2()
AS
SELECT *
REPLACE("John" AS employee_name)
FROM employees;
Copy
Code généré :
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

Recommandations

SSC-EWI-BQ0011

L’attribution de variables de session d’un type de données complexe n’est pas prise en charge dans Snowflake.

Gravité

Medium

Description

Dans BigQuery, la déclaration d’une variable au niveau du script permet de l’utiliser dans l’ensemble du script. Pour répliquer ce comportement dans Snowflake, des variables SQL sont utilisées.

Cependant, la déclaration de variables de types de données complexes comme ARRAY, GEOGRAPHY, STRUCT ou JSON échouera dans Snowflake lors de la tentative de définition de la valeur sur la variable SQL. Lorsque SnowConvert AI détectera un de ces cas, cet EWI sera ajouté à la déclaration de la variable SQL.

Les variables de ces types peuvent être déclarées sans problème à l’intérieur d’instructions de bloc et d’autres instructions de procédure. Cet EWI ne s’applique qu’aux variables déclarées au niveau du script.

Exemple de code

Code d’entrée :
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
Code généré :
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

Recommandations

  • Si les utilisations de la variable sont limitées à une seule portée, ou si sa valeur n’est jamais modifiée, envisagez de déclarer la variable localement dans les portées qui l’utilisent. Ainsi, le problème sera résolu.

  • Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.

SSC-EWI-BQ0012

Impossible de générer le bon paramètre OBJECT_CONSTRUCT.

Gravité

Élevé

Description

SnowConvert AI n’est pas capable de générer la construction d’objet correcte en raison d’un chargement incorrect du symbole.

Exemple de code

Code d’entrée :
BigQuery
 INSERT INTO test.tuple_sample
VALUES
  ((12, 34)),
  ((56, 78)),
  ((9, 99)),
  ((12, 35));
Copy
Code généré :
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

Recommandations

SSC-EWI-BQ0013

Le format de données de tables externes n’est pas pris en charge dans Snowflake.

Avertissement

Cet EWI est obsolète. Veuillez vous référer à SSC-EWI-0029 pour la dernière version de cet EWI.

Gravité

Medium

Description

Snowflake prend en charge les formats BigQuery suivants :

BigQuery

Snowflake

AVRO

AVRO

CSV
GOOGLE_SHEETS

CSV

NEWLINE_DELIMITED_JSON
JSON

JSON

ORC

ORC

PARQUET

PARQUET

Lorsqu’une table externe comprend un autre FORMAT non spécifié dans le tableau ci-dessus, cet EWI sera généré pour informer l’utilisateur que ce FORMAT n’est pas pris en charge.

Exemple de code

Code d’entrée :
BigQuery
 CREATE OR REPLACE EXTERNAL TABLE test.backup_restore_table
OPTIONS (
  format = 'DATASTORE_BACKUP',
  uris = ['gs://backup_bucket/backup_folder/*']
);
Copy
Code généré :
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

Recommandations

SSC-EWI-BQ0014

Les tables externes partitionnées Hive ne sont pas prises en charge dans Snowflake.

Gravité

Medium

Description

Snowflake ne prend pas en charge les tables externes partitionnées Hive. Lorsque la clause WITH PARTITION COLUMNS sera trouvée dans la table externe, elle sera marquée comme non prise en charge à l’aide de cet EWI.

Exemple de code

Code d’entrée :
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
Code généré :
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

Recommandations

SSC-EWI-BQ0015

Une table externe nécessite une zone de préparation externe pour accéder à un emplacement externe, définir et remplacer l‘espace réservé EXTERNAL_STAGE.

Avertissement

Cet EWI est obsolète. Veuillez vous référer à SSC-EWI-0032 pour la dernière version de cet EWI.

Description

Lors de la transformation de l’instruction CREATE EXTERNAL TABLE, SnowConvert AI générera un espace réservé EXTERNAL_STAGE devant être remplacé par la zone de préparation externe créée pour la connexion avec l’emplacement externe de Snowflake.

Veuillez vous référer aux guides suivants pour configurer l’intégration de stockage et la zone de préparation externe nécessaires dans votre compte Snowflake :

Exemple de code

Code d’entrée :
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
Code généré :
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);

Recommandations

  • Configurez votre connexion externe dans le compte Snowflake et remplacez l’espace réservé EXTERNAL_STAGE pour effectuer la transformation.

  • Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.

SSC-EWI-BQ0016

Sélectionner * avec plusieurs opérateurs UNNEST produira une ambiguïté dans les colonnes.

Gravité

Medium

Description

Dans le cadre de la transformation SnowConvert pour l’opérateur UNNEST, la fonction FLATTEN est utilisée. Cette fonction génère plusieurs colonnes non nécessaires pour émuler la fonctionnalité d’opérateur UNNEST, comme les colonnes THIS ou PATH.

Lorsqu’un SELECT * avec l’opération UNNEST sera trouvé, SnowConvert supprimera les colonnes non nécessaires à l’aide du mot-clé EXCLUDE. Cependant, lorsque plusieurs opérateurs UNNEST sont utilisés dans la même instruction, les colonnes ne peuvent pas être supprimées en raison de problèmes d’ambiguïté. Cet EWI sera généré pour signaler ces cas.

Il est recommandé de développer la liste des expressions SELECT afin de ne spécifier que les colonnes attendues et de résoudre ce problème.

Exemple de code

Code d’entrée :
BigQuery
SELECT * FROM UNNEST ([10,20,30]);

SELECT * FROM UNNEST ([10,20,30]) AS numbers, UNNEST(['Hi', 'Hello', 'Bye']) AS words;
Copy
Code généré :
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

Le désimbrication d’un tableau de structures n’est pas prise en charge.

Gravité

Medium

Description

Lors de la désimbrication d’un tableau de structures, BigQuery générera une colonne pour chaque champ de structures et répartira les valeurs de structures dans ses colonnes correspondantes. Ce comportement n’est actuellement pas pris en charge. Chaque fois que SnowConvert détectera que l’opérateur UNNEST est appliqué sur un tableau de structures, cet EWI sera généré.

Exemple de code

Code d’entrée :
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
Code généré :
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