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¶
Code de sortie :
Snowflake¶
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¶
Code généré :¶
Snowflake¶
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¶
Pending SnowConvert AI translation for differential privacy.
Gravité¶
Medium
Description¶
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.
Exemple de code¶
Code d’entrée :¶
BigQuery¶
Code généré :¶
Snowflake¶
Recommandations¶
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¶
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¶
Code généré :¶
Snowflake¶
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 :
Snowflake :
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.
SSC-EWI-BQ0005¶
Javascript code has not been validated by SnowConvert AI.
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¶
Code généré :¶
Snowflake¶
Recommandations¶
Examinez l’ensemble du code Javascript avant le déploiement.
Les paramètres Javascript dans Snowflake doivent être en majuscules.
For more information, visit Snowflake’s Introduction to Javascript UDFs.
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¶
Code généré :¶
Snowflake¶
Recommandations¶
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¶
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.
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.
Exemple de code¶
Code d’entrée :¶
BigQuery¶
Code généré :¶
Snowflake¶
Recommandations¶
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¶
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 :¶
BigQuery¶
Code généré :¶
Snowflake¶
Recommandations¶
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.
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¶
Code généré :¶
Snowflake¶
Recommandations¶
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
Gravité¶
Medium
Description¶
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.
Exemple de code¶
Code d’entrée :¶
BigQuery¶
Code généré :¶
Snowflake¶
Recommandations¶
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.
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¶
Code généré :¶
Snowflake¶
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¶
SnowConvert AI was unable to generate a correct OBJECT_CONSTRUCT parameter. Missing symbol information.
Gravité¶
Élevé
Description¶
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.
Exemple de code¶
Code d’entrée :¶
BigQuery¶
Code généré :¶
Snowflake¶
Recommandations¶
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¶
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 |
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.
Exemple de code¶
Code d’entrée :¶
BigQuery¶
Code généré :¶
Snowflake¶
Recommandations¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-BQ0014¶
Hive partitioned external tables are not supported in 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¶
Code généré :¶
Snowflake¶
Recommandations¶
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
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¶
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.
Avertissement
This EWI is deprecated; please refer to SSC-FDM-0012 for the latest version of this issue.
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¶
Code généré :¶
Snowflake¶
SSC-EWI-BQ0017¶
Pending SnowConvert AI translation for UNNEST of an array of structs
Gravité¶
Medium
Description¶
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.
Exemple de code¶
Code d’entrée :¶
BigQuery¶
Code généré :¶
Snowflake¶
Recommandations¶
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: