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;
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;
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;
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" }}';
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;
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;
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);
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);
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
OVERdes 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);
Snowflake :
SELECT
COUNT(col1) OVER(ORDER BY col2)
FROM
test.exampleTable;
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¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
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;";
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;
$$;
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);
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))');
Recommandations¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
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";
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';
Recommandations¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
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";
Code généré :¶
Premier onglet¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-BQ0008 - EIGHT HEX DIGIT UNICODE ESCAPE SEQUENCE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
'\U00100000';
Recommandations¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
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;
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
$$;
Recommandations¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
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;
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;
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));
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));
Recommandations¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
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 |
CSV |
NEWLINE_DELIMITED_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/*']
);
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/*']
);
Recommandations¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
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);
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" }}';
Recommandations¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
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 :
Pour les tables externes faisant référence à Google Cloud Storage
Pour les tables externes faisant référence à Azure Blob Storage
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']
);
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;
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
);
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;
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;