SnowConvert AI - Différences fonctionnelles Redshift¶
SSC-FDM-RS0001¶
Data storage option is not supported in Snowflake. Data distribution is automatically handled by Snowflake.
Description¶
Dans Snowflake, il n’est pas nécessaire de définir explicitement SORTKEY et DISTSTYLE lors de la migration depuis Redshift, car l’architecture de Snowflake gère de manière inhérente la distribution et l’optimisation des données. Snowflake gère automatiquement le partitionnement et l’indexation des données, optimisant les performances des requêtes sans qu’il ne soit nécessaire de configurer manuellement ces paramètres.
Exemple de code¶
Code d’entrée :¶
Redshift¶
Code généré :¶
Snowflake¶
Meilleures pratiques¶
Il est conseillé d’évaluer l’utilisation de
CLUSTER BYdans Snowflake lors de la migration depuis Redshift, car elle peut améliorer les performances des requêtes en optimisant la localité des données pour les colonnes fréquemment interrogées.Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-RS0002¶
The performance of CLUSTER BY in Snowflake may vary compared to the performance of SORTKEY in Redshift.
Description¶
Les SORTKEY (à l’exception de SORTKEY AUTO) dans Amazon Redshift sont analogues à CLUSTER BY dans Snowflake. Cependant, les implications en termes de performances peuvent varier en raison des différences architecturales entre Redshift et Snowflake.
SORTKEYaméliore les performances en conservant les données dans un ordre trié en fonction de colonnes spécifiées. Cela est particulièrement avantageux pour les requêtes portant sur des intervalles et les opérations d’ordre.CLUSTER BYdans Snowflake organise les données en blocs en fonction de colonnes désignées, facilitant ainsi les tâches de filtrage et d’agrégation. Cependant, l’ordre est moins strict par rapport àSORTKEY.
La compréhension de ces mécanismes est essentielle pour optimiser les performances dans chaque plateforme respective.
Exemple de code¶
Code d’entrée :¶
Redshift¶
Code généré :¶
Snowflake¶
Meilleures pratiques¶
Benchmark after migration: Run representative queries on both platforms to compare performance, as
CLUSTER BYuses micro-partitioning rather than physical sort order.Consider automatic clustering: For large tables with frequent queries on specific columns, enable automatic clustering in Snowflake.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-RS0003¶
Pending SnowConvert AI translation for Redshift foreign key constraints.
Description¶
Pending SnowConvert AI translation for Redshift foreign key constraints. Snowflake supports foreign key constraints, but they are not enforced and serve only as referential integrity metadata. This is a SnowConvert AI limitation, not a Snowflake platform limitation.
Exemple de code¶
Code d’entrée :¶
Redshift¶
Code généré :¶
Snowflake¶
Meilleures pratiques¶
Vous pouvez manuellement modifier des tables avec des clés étrangères et en ajouter.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-RS0004¶
Il est possible que la date soit erronée et que Snowflake n’accepte pas les dates erronées.
Description¶
Dans Snowflake, l’utilisation de TO_DATE avec une chaîne de date non valide (comme « 20010631 ») entraîne une erreur, car elle impose une validation stricte, rejetant toute date inexistante. En revanche, TO_DATE de Redshift peut ajuster ces dates non valides à la date valide la plus proche (par exemple, en passant du 31 juin au 1er juillet) si le paramètre is_strict est défini sur faux. Cette différence met en évidence la façon dont Snowflake donne la priorité à l’intégrité des données en ne corrigeant pas automatiquement les dates non valides, tandis que Redshift permet une plus grande flexibilité dans la gestion des dates.
Exemple de code¶
Code d’entrée :¶
Redshift¶
Code généré :¶
Snowflake¶
Meilleures pratiques¶
Vérifiez que la date est valide dans TRY_TO_DATE().
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-RS0005¶
Redshift MERGE rejects duplicate source rows. Snowflake allows them, which may produce different results.
Description¶
In Redshift, the MERGE statement throws an error when the source table contains duplicate rows matching the join condition. Snowflake allows MERGE to execute with duplicate source rows, which may produce non-deterministic results when multiple source rows match the same target row.
Exemple de code¶
Code d’entrée :¶
Redshift¶
Code généré :¶
Snowflake¶
Meilleures pratiques¶
Deduplicate source data: Add a
QUALIFY ROW_NUMBER() OVER (PARTITION BY join_key ORDER BY ...) = 1to the source subquery to ensure each target row matches at most one source row.Validate results: After migration, compare
MERGEoutput row counts between Redshift and Snowflake to detect non-deterministic behavior.Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-RS0006¶
Called procedure contains usages of COMMIT/ROLLBACK. Modifying the current transaction in child scopes is not supported in Snowflake.
Description¶
Dans Redshift, il est autorisé d’utiliser les instructions COMMIT et ROLLBACK à l’intérieur d’une procédure pour rendre permanentes ou ignorer les modifications sur une transaction qui a été ouverte sur une portée extérieure.
Snowflake fonctionne avec le concept de transactions scopées, qui traite chaque appel de procédure comme une transaction distincte, ce qui limite les effets des instructions COMMIT et ROLLBACK sur la portée de la procédure dans lesquelles elles sont déclarées.
La différence fonctionnelle mentionnée ci-dessus sera signalée par ce FDM lorsque des appels à une procédure avec COMMIT ou ROLLBACK seront détectés par SnowConvert.
Exemple de code¶
Code d’entrée :¶
Redshift¶
Code généré :¶
Snowflake¶
Meilleures pratiques¶
Refactor transaction control: Move
COMMITandROLLBACKstatements into the outermost procedure or use scoped transactions where supported.Use caller’s rights: Ensure the calling procedure manages the transaction boundary, as Snowflake’s scoped transactions isolate child procedure changes.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-RS0007¶
DDL statements perform an automatic COMMIT in Snowflake. ROLLBACK will not undo DDL-committed changes.
Description¶
Dans Snowflake, [les instructions DDL effectuent une validation automatique] (https://docs.snowflake.com/fr/sql-reference/transactions#ddl) après leur exécution, rendant permanentes toutes les modifications de la transaction en cours, ce qui signifie qu’elles ne peuvent pas être écartées par un ROLLBACK.
Lorsqu’une instruction ROLLBACK sera trouvée dans une procédure qui contient également une instruction DDL, SnowConvert AI générera ce FDM pour signaler le comportement de validation automatique de la DDL.
Exemple de code¶
Code d’entrée :¶
Redshift¶
Code généré :¶
Snowflake¶
Meilleures pratiques¶
Separate DDL from DML transactions: Move DDL statements outside the transaction block, or execute them before
BEGIN TRANSACTIONto avoid implicit commits affecting DML operations.Use conditional logic: If DDL creation is conditional, check for object existence with
IF NOT EXISTSto avoid unnecessary autocommits.Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-FDM-RS0008¶
Snowflake uses autocommit by default. The NONATOMIC option is not supported in Snowflake.
Description¶
In Redshift, the NONATOMIC option on CREATE PROCEDURE allows individual statements within the procedure to commit independently. In Snowflake, autocommit is the default behavior — each statement is automatically committed unless wrapped in an explicit BEGIN TRANSACTION block. The NONATOMIC keyword is removed during migration because Snowflake’s autocommit provides equivalent semantics.
Exemple de code¶
Code d’entrée :¶
Redshift¶
Code généré :¶
Snowflake¶
Meilleures pratiques¶
Verify transaction behavior: If the original Redshift procedure relied on
NONATOMICfor partial commits, test the migrated Snowflake procedure to confirm that autocommit provides the expected semantics.Add explicit transactions where needed: If you need atomic (all-or-nothing) behavior for a group of statements in Snowflake, wrap them in
BEGIN TRANSACTION…COMMIT.Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.