SnowConvert AI - Problèmes Teradata¶
SSC-EWI-TD0001¶
Erreur d’alias de transfert récursif.
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Gravité¶
Faible
Description¶
Cet EWI s’affiche chaque fois que SnowConvert AI détecte une récursivité dans les expressions aliasées, ce qui l’empêche d’exécuter la transformation des alias de transfert nécessaire au bon fonctionnement des alias dans l’environnement Snowflake.
Un alias récursif se produit lorsqu’une expression aliasée contient un autre alias et que la deuxième expression aliasée contient le premier alias. Cela peut ne pas être aussi simple que le montre l’exemple, car la récursivité peut se produire plus loin dans la ligne, de manière transitive.
Exemple de code¶
Remarque : les alias récursifs ne sont pas pris en charge dans Snowflake. Cependant, certaines instances simples le sont.
Note
Notez que l’alias récursif n’est pas pris en charge dans Snowflake. Cependant, certaines instances simples le sont. Consultez les exemples ci-dessous.
L’exemple de code suivant fonctionne dans Snowflake après la migration :
Teradata :¶
Snowflake Scripting:¶
En revanche, l’exemple de code suivant ne fonctionne pas :
Teradata :¶
Snowflake Scripting:¶
Meilleures pratiques¶
Examinez votre code et assurez-vous que des alias de transfert récursifs ne sont pas présents. L’EWI indique le nom de la première instance d’un alias qui comprend des références récursives, mais cela ne signifie pas qu’il s’agit de la seule instance de votre code qui en contient.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0002¶
Type Interval non pris en charge.
Cet EWI est obsolète depuis la version 28.1.100 de SnowConvert AI.
Severity
Élevé
Description
When the selector of a column in a SQL statement is type INTERVAL, the EWI will be added and a Stub function will be created too. This is a type that is not supported in Snowflake and therefore implies pending work after SnowConvert AI finishes.
Example Code
Teradata:
Snowflake Scripting:
Best Practices
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0003
Le classement n’est pas pris en charge dans les fonctions de rognage. Ajoutez le classement d’origine au résultat de la fonction pour le conserver.
Severity
Faible
Description
Dans Snowflake, les fonctions de rognage (LTRIM, RTRIM ou TRIM) ne prennent pas en charge le classement, sauf si les caractères à rogner sont des caractères d’espacement vides ou blancs.
Si SnowConvert AI détecte une fonction LTRIM, RTRIM ou TRIM LEADING, TRAILING, ou les deux fonctions avec le scénario mentionné ci-dessus, la fonction COLLATE sera générée automatiquement pour créer une copie sans classement de la colonne d’entrée. Cet EWI est généré pour indiquer que le classement de la colonne a été supprimé avant la fonction de rognage, ce qui signifie que le résultat de la fonction n’aura pas de classement et que cela peut modifier les résultats des comparaisons ultérieures utilisant le résultat.
Example Code
Teradata:
Snowflake Scripting:
Best Practices
Pour éviter des différences fonctionnelles lors des comparaisons, veuillez ajouter le classement d’origine de la colonne à la chaîne de résultat de la fonction
TRIM. Pour ce faire, utilisez la fonctionCOLLATEet spécifiez le classement d’origine de la colonne comme deuxième argument. Cet argument doit être une chaîne littérale avec la valeur de classement.Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0004
Exception SQL non prise en charge sur le Continue Handler.
Severity
Faible
Description
Dans les procédures Snowflake, il n’existe pas de transformation équivalente pour le Continue Handler de Teradata. Pour certains codes d’exception pris en charge, SnowConvert AI effectue un traitement pour émuler ce comportement. Cet EWI est ajouté aux instructions du Continue Handler ayant un code d’exception qui n’est pas pris en charge.
Example Code
Teradata:
Snowflake Scripting:
Best Practices
Vérifiez les instructions possibles qui peuvent lever le code d’exception et encapsulez-les dans un bloc de code similaire à celui vu dans la Référence de la traduction du Continue Handler.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0005
L’instruction a été convertie, mais sa fonctionnalité n’est pas encore mise en œuvre.
Severity
Critique
Description
L’instruction a été reconnue et convertie, mais le code converti n’aura pas la fonctionnalité attendue, car la mise en œuvre n’est pas encore terminée.
L’avertissement est ajouté pour informer l’utilisateur que lorsque le script utilisera cette instruction, celui-ci n’aura pas l’équivalent fonctionnel attendu.
Exemple de source
Code d’entrée BTEQ :
Code de sortie Python :
Best Practices
Pour plus d’informations, veuillez vous référer à la spécification de traduction de BTEQ en Python.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0006
Valeur par défaut non valide.
Severity
Faible
Description
Les spécifications de colonnes DEFAULT TIME / DEFAULT DATE / DEFAULT CURREN_DATE / DEFAULT DEFAULT CURRENT_TIME / DEFAULT CURRENT_TIMESTAMP ne sont pas prises en charge pour le type de données FLOAT.
Example Code
Teradata:
CREATE TABLE T_2004
(
-- In the output code all of these columns will be FLOAT type
-- and will include the SSC-EWI-TD0006 message.
COL1 FLOAT DEFAULT TIME,
COL2 FLOAT DEFAULT DATE,
COL3 FLOAT DEFAULT CURRENT_DATE,
COL4 FLOAT DEFAULT CURRENT_TIME,
COL5 FLOAT DEFAULT CURRENT_TIMESTAMP
);
Snowflake Scripting:
Best Practices
Aucune autre action de l’utilisateur n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0007
La clause GROUP BY n’est pas prise en charge dans le mode Teradata pour la comparaison de chaînes.
Severity
Faible
Description
Ce message d’erreur indique un problème possible lors de la migration des requêtes SQL Teradata vers Snowflake, en particulier en raison de différences dans la façon dont la clause GROUP BY gère la sensibilité des comparaisons de chaînes en mode Teradata.
En mode Teradata, les comparaisons de chaînes dans les clauses GROUP BY sont insensibles à la casse par défaut (NOT CASESPECIFIC), tandis que Snowflake est sensible à la casse, à moins que les colonnes ne soient explicitement définies avec une clause COLLATE insensible à la casse. Cette différence peut entraîner des requêtes qui s’appuient sur un groupement insensible à la casse dans Teradata pour produire des résultats différents dans Snowflake.
Example Code
Teradata:
Snowflake Scripting:
Différences de comportement attendues
Plateforme |
Comportement de regroupement |
Exemple de lignes de résultats |
|---|---|---|
Mode Teradata |
Groupe “John”, “JOHN” et “john” ensemble |
|
Snowflake |
Traite “John”, “JOHN” et “john” séparément |
|
Best Practices
Examinez les clauses GROUP BY impliquant des colonnes de chaînes lors de la migration depuis le mode Teradata afin de garantir le comportement de regroupement attendu.
Remarque : lorsque vous utilisez des expressions comme RTRIM(UPPER(first_name)) ou RTRIM(first_name) dans la clause GROUP BY pour obtenir un regroupement insensible à la casse ou tronqué, vous devez appliquer la même expression de manière cohérente dans toutes les parties de la requête où la colonne est référencée. Par exemple :
Ainsi, le filtrage, la sélection et le regroupement utilisent tous la même logique, ce qui évite des discordances ou des résultats inattendus.
Définissez des colonnes avec COLLATE lors de la création de la table si un comportement cohérent insensible à la casse est requis :
Activez l’indicateur CLI –UseCollateForCaseSpecification ou le paramètre de conversion pour utiliser COLLATE pour la spécification de la casse pendant la conversion. Cette option garantit que la spécification de la casse (comme CASESPECIFIC ou NOT CASESPECIFIC) est géré à l’aide des fonctions COLLATE au lieu des fonctions UPPER. Pour plus de détails, référez-vous à la documentation CLI ou aux paramètres de conversion.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0008
La fonction de comparaison de chaînes n’est pas prise en charge.
Severity
Faible
Description
Actuellement, il n’existe pas d’équivalence pour certaines fonctions de comparaison de chaînes dans Snowflake.
Cet EWI est ajouté chaque fois que le type de comparaison est jaro, n_gram, LD, LDWS, OSA, DL, hamming, LCS, jaccard, cosine and soundexcode.
Example Code
Teradata:
Snowflake Scripting:
Best Practices
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0009
Colonne TEMPORAL non prise en charge.
Severity
Faible
Description
Teradata fournit une prise en charge des tables temporelles au niveau des colonnes à l’aide de colonnes de périodes dérivées. Ces colonnes ne sont pas prises en charge dans Snowflake.
Example Code
Teradata:
Snowflake Scripting:
Best Practices
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0010
UPPERCASE non pris en charge par Snowflake.
Severity
Faible
Description
L’attribut de colonne UPPERCASE n’est pas pris en charge dans Snowflake.
Example Code
Teradata:
Snowflake Scripting:
Best Practices
Étant donné que la clause
UPPERCASEindique que les caractères typés “aaa” sont stockés sous la forme “AAA”, une solution de contournement possible peut consister à ajouter la fonction [UPPER] à toutes les références d’insertion(https://docs.snowflake.com/fr/sql-reference/functions/upper). Cependant, le chargement de données externes par des processus ETL devraient également être modifiés.Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0012
Les binaires ne prennent pas en charge les valeurs par défaut.
Severity
Faible
Description
Cet EWI s’affiche lorsque SnowConvert AI trouve un type de données BINARY avec une spécification de valeurs par DEFAULT. Étant donné que les valeurs par défaut ne sont pas autorisées dans les colonnes BINARY, il est supprimé.
Example Code
Teradata:
Snowflake Scripting:
Best Practices
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0017
La fonctionnalité de traçage des tables temporaires globale n’est pas prise en charge.
Severity
Faible
Description
Cet EWI s’affiche lorsque SnowConvert AI trouve Create Table avec l’option GLOBAL TEMPORARY TRACE. Examinez la documentation Teradata suivante relative à la fonctionnalité TRACE. Étant donné qu’elle n’est pas prise en charge dans Snowflake, elle est supprimée.
Example Code
Teradata:
Snowflake Scripting:
Best Practices
Remarque : Il peut être possible de répliquer certaines fonctionnalités de traçage dans Snowflake à l’aide d’
EVENT TABLE. Examinez la documentation suivante de Snowflake relative à la journalisation et au traçage.Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0020
La fonction Regexp_Substr prend uniquement en charge les expressions régulières POSIX.
Note
Cet EWI est obsolète. Veuillez vous référer à la documentation SSC-EWI-0009.
Gravité¶
Faible
Description¶
Actuellement, Snowflake ne prend pas en charge l’expression régulière étendue au-delà de la syntaxe d’expressions régulières de base POSIX.
This EWI is added every time a function call to REGEX_SUBSTR, REGEX_REPLACE, or REGEX_INSTR is transformed to Snowflake to warn the user about possible unsupported regular expressions. Some of the features not supported are lookahead, lookbehind, and non-capturing groups.
Exemple de code¶
Teradata :¶
Snowflake Scripting:¶
Meilleures pratiques¶
Check the regular expression used in each case to determine whether it needs manual intervention. More information about expanded regex support and alternatives in Snowflake can be found here.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0023¶
ACTIVITY_COUNT à l’intérieur de SELECT/SET INTO VARIABLE nécessite une correction manuelle.
Gravité¶
Faible
Description¶
The ACTIVITY_COUNT status variable returns the number of rows affected by an SQL DML statement in an embedded SQL or stored procedure application. For more information, see the Teradata ACTIVITY_COUNT documentation.
Comme expliqué dans sa spécification de traduction, il existe une solution de contournement pour émuler le comportement de ACTIVITY_COUNT via :
Lorsque vous utilisez ACTIVITY_COUNT dans une instruction SELECT/SET INTO VARIABLE, elle ne peut pas être simplement remplacée par la solution de contournement mentionnée ci-dessus.
Exemple de code¶
Teradata¶
REPLACE PROCEDURE InsertEmployeeSalaryAndLog_4 ()
BEGIN
DECLARE rowCount INT;
DECLARE message VARCHAR(100);
INSERT INTO employees (employee_id, first_name, last_name, department_id, salary)
VALUES (101, 'Alice', 'Smith', 10, 70000.00);
SELECT ACTIVITY_COUNT INTO rowCount;
SET message = 'ROWS INSERTED: ' || rowCount;
-- Insert the ACTIVITY_COUNT into the activity_log table
INSERT INTO activity_log (operation, row_count)
VALUES (message, rowCount);
END;
Snowflake¶
Correction manuelle¶
Une partie de la solution de contournement présentée ci-dessus peut être utilisée pour obtenir le nombre de lignes insérées/mises à jour/supprimées, comme suit :
Au lieu d’utiliser la requête complète, il convient de l’adapter manuellement à la syntaxe [SELECT INTO VARIABLE] de Snowflake(https://docs.snowflake.com/fr/sql-reference/constructs/into).
Par ailleurs, si RESULT_SCAN(LAST_QUERY_ID()) donne des résultats incorrects, vérifiez SSC-FDM-TD0033(../functional-difference/teradataFDM.md#ssc-fdm-td0033) pour savoir comment gérer les limitations possibles de l’utilisation de LAST_QUERY_ID.
Meilleures pratiques¶
Adaptez manuellement la solution de contournement proposée.
Vérifiez SSC-FDM-TD0033(../functional-difference/teradataFDM.md#ssc-fdm-td0033) pour savoir comment gérer les limitations possibles de l’utilisation de
LAST_QUERY_ID.Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0024¶
L’instruction annulée n’est pas prise en charge en raison d’une fonction d’agrégation.
Gravité¶
Faible
Description¶
Cet EWI apparaît lorsqu’une fonction AGGREGATE fait partie d’une instruction ABORT à l’intérieur d’une procédure stockée. L’instruction est commentée.
Exemple de code¶
Teradata :¶
Snowflake Scripting:¶
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0025¶
Format de sortie non pris en charge.
Gravité¶
Faible
Description¶
Cet EWI apparaît lorsqu’une fonction CAST spécifie un format de sortie non pris en charge par l’Exécution de scripts Snowflake.
Exemple de code¶
Teradata :¶
Snowflake Scripting:¶
Meilleures pratiques¶
Vérifiez si le code de sortie présente une équivalence fonctionnelle avec le code d’origine.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0027¶
Snowflake ne prend pas en charge les options de colonnes de dimensions temporelles intégrées de Teradata.
Gravité¶
Faible
Description¶
L’EWI est généré, car Snowflake ne prend pas en charge les attributs de dimensions temporelles intégrés de Teradata comme VALIDTIME ou TRANSACTIONTIME.
Exemple de code¶
Entrée Teradata :¶
Sortie Snowflake :¶
Meilleures pratiques¶
Créez manuellement les colonnes TIMESTAMP avec des valeurs par défaut telles que CURRENT_TIMESTAMP.
En tirant parti de l’utilisation des flux de tables, elles peuvent enregistrer les modifications de manipulation de données apportées aux tables, ainsi que les métadonnées relatives à chaque modification. (Guide)
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0029¶
La fonctionnalité Queue table n’est pas prise en charge.
Gravité¶
Faible
Description¶
Cet avertissement apparaît lorsqu’une TABLE avec l’attribut QUEUE est migrée. Le mot-clé QUEUE est supprimé, car il n’est pas pris en charge dans Snowflake.
Exemple de code¶
Entrée :¶
Sortie :¶
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0031¶
Le résultat peut différer, car le type Char possède une longueur fixe dans Teradata.
Gravité¶
Faible
Description¶
Étant donné que le type de données CHAR de Teradata possède une longueur fixe, certaines fonctions telles que LIKE tenteront de faire correspondre la colonne complète à la place du mot inséré dans la colonne, ce qui entraînera des correspondances fausses. Cependant, le type CHAR de Snowflake est de taille variable, ce qui signifie que les fonctions LIKE essaieront toujours de faire correspondre les valeurs insérées. Prenons l’exemple du code suivant :
Exemple de code¶
Entrée :¶
Sortie :¶
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0034¶
Le SQL multi-instructions n’est pas pris en charge.
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Gravité¶
Faible
Description¶
L’exécution du SQL multi-instructions n’est pas prise en charge. La demande a été traitée comme une transaction.
Note
L’EWI suivant n’est généré que lorsque l’indicateur de langage cible PL est défini sur Javascript, comme ceci : “–PLTargetLanguage Javascript”
Exemple de code¶
Entrée :¶
-- Additional Params: --PLTargetLanguage Javascript
REPLACE PROCEDURE proc1()
BEGIN
BEGIN REQUEST;
SELECT* FROM TABLE1;
END REQUEST;
END;
Sortie :¶
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0039¶
Format d’entrée non pris en charge.
Gravité¶
Medium
Description¶
Le format d’entrée spécifié n’est pas pris en charge dans Snowflake.
Exemple de code¶
Entrée :¶
Sortie :¶
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0040¶
Le format dans une table n’est pas pris en charge.
Gravité¶
Faible
Description¶
Le format spécifié n’est pas pris en charge.
Exemple de code¶
Entrée :¶
Sortie :¶
SSC-EWI-TD0041¶
La fonction Trunc a été ajoutée pour garantir l’entier.
Gravité¶
Faible
Description¶
Lors de la migration de Teradata vers Snowflake, vous pouvez rencontrer des différences dans la façon dont les conversions numériques sont gérées. Dans Teradata, convertir une valeur en INTEGER tronquera implicitement toute partie décimale, même si la valeur d’origine est un nombre à virgule flottante ou une représentation sous forme de chaîne d’un nombre. Cependant, dans Snowflake, la conversion d’un numérique non entier ou d’une chaîne directement en INTEGER peut entraîner des erreurs ou des résultats inattendus si la valeur n’est pas déjà un entier.
Pour assurer la compatibilité, la fonction TRUNC() est appliquée avant le conversion en INTEGER. Cela supprime toute partie décimale, ce qui permet une conversion sûre en entier. Toutefois, si la valeur source n’est pas numérique ou est une chaîne non numérique, des erreurs peuvent persister et une intervention manuelle peut être nécessaire. Par exemple, si SnowConvert AI ne peut pas déterminer le type de colonne en raison de références manquantes, vous devrez peut-être ajuster manuellement la conversion.
Exemple de code¶
Entrée :¶
Sortie :¶
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0046¶
La référence intégrée n’est pas prise en charge dans Snowflake.
Gravité¶
Medium
Description¶
Cette erreur apparaît lorsqu’il existe une référence à une table DBC et que la colonne sélectionnée n’a pas d’équivalence dans Snowflake.
Exemple de code¶
Entrée :¶
Sortie :¶
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0049¶
Instruction TPT non traitée.
Gravité¶
Élevé
Description¶
Une instruction DML dans TPT n’a pas pu être traitée et convertie par l’outil. Cela peut se produire pour diverses raisons, telles que l’utilisation de la concaténation avec des variables de script ou l’utilisation de guillemets d’échappement à l’intérieur de l’instruction DML.
Exemple de code¶
Code d’entrée :¶
Code généré :¶
Meilleures pratiques¶
Pour ce problème, vous pouvez saisir l’instruction d’insertion manuellement et/ou, étant donné que la valeur DML n’est pas encore prise en charge, demander à l’équipe SnowConvert AI d’ajouter la prise en charge pour ce cas spécifique.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0051¶
Les résultats de la fonction BYTES de Teradata diffèrent de ceux de la fonction LENGTH pour les colonnes d’octets de Snowflake.
Gravité¶
Faible
Description¶
Étant donné que le type de données octets de Teradata possède une longueur fixe, la fonction BYTES comptera toujours les zéros de fin insérés pour s’adapter aux valeurs de type octets plus petites dans la colonne, en renvoyant la taille de la colonne au lieu de la taille de la valeur insérée à l’origine. Cependant, le type binaire de Snowflake a une taille variable, ce qui signifie que la fonction LENGTH renverra toujours la taille des valeurs insérées. Prenons l’exemple du code suivant :
Teradata :
Code équivalent dans Snowflake :
Exemple de code :¶
Code d’entrée :¶
Code généré :¶
Meilleures pratiques¶
Analysez l’utilisation faite des résultats de la fonction BYTES. Le comportement de la fonction LENGTH de Snowflake correspond à celui souhaité dès le départ et aucun changement n’est nécessaire.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0052¶
La conversion implicite de Snowflake en numérique diffère de Teradata et peut échouer pour les chaînes non littérales.
Gravité¶
Faible
Description¶
Teradata et Snowflake autorisent tous deux les valeurs de chaînes pour les fonctions qui attendent des paramètres numériques. Ces chaînes sont ensuite analysées et converties en leur équivalent numérique.
Cependant, ces deux langages présentent des différences quant à ce qu’ils considèrent comme une chaîne numérique valide. Teradata est plus permissif et analyse correctement des cas tels que les chaînes vides/avec espaces blancs uniquement, les tirets intégrés, l’absence de chiffres dans la mantisse ou l’exposant, les signes monétaires, les séparateurs de chiffres ou la spécification du signe du nombre après les chiffres. Par exemple, les chaînes suivantes sont valides :
'1-2-3-4-5' -> 12345'$50' -> 50'5000-' -> -5000'1 569 284,55' -> 1569284,55
Snowflake applique une conversion de chaîne optimiste automatique et s’attend à ce que les chaînes correspondent aux formats TM9 ou TME, de sorte que la conversion échoue pour la plupart des cas mentionnés. Pour résoudre ces différences, SnowConvert AI traite les littéraux de chaînes transmis aux fonctions qui effectuent une conversion implicite en numériques et génère des chaînes équivalentes qui correspondent à TM9 ou TME afin qu’elles puissent être analysées par Snowflake. Ceci ne s’applique qu’aux valeurs de chaînes littérales, ce qui signifie que les valeurs non littérales n’ont aucune garantie d’être analysées par Snowflake.
Exemple de code¶
Code d’entrée :¶
Code généré :¶
Meilleures pratiques¶
Aucune autre action de l’utilisateur n’est requise.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0053¶
Snowflake ne prend pas en charge le type de données Period. Toutes les périodes sont traitées en tant que varchar à la place.
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Note
Cet EWI est obsolète. Veuillez vous référer à la documentation SSC-FDM-TD0036.
Précision des représentations varchar générées¶
PERIOD_UDF génère la représentation varchar d’une période en utilisant les formats par défaut pour les horodatages et l’heure spécifiés dans Snowflake. Cela signifie que les horodatages auront trois chiffres de précision et que les variables temporelles en auront zéro. Pour cette raison, vous pouvez remarquer que les résultats ont une précision plus/moins élevée que celle attendue. Il existe deux options pour modifier le nombre de chiffres de précision inclus dans la chaîne résultante :
Utilisez la version à trois paramètres de PERIOD_UDF : Cette surcharge de la fonction prend le paramètre
PRECISIONDIGITS, un entier compris entre 0 et 9, pour contrôler combien de chiffres de la partie fractionnaire seront inclus dans le résultat. Notez que même si Snowflake prend en charge jusqu’à neuf chiffres de précision, le maximum dans Teradata est de six. Exemple :
Appel |
Résultat |
|---|---|
|
|
|
|
|
|
Modifiez les paramètres de session
TIMESTAMP_NTZ_OUTPUT_FORMATetTIME_OUTPUT_FORMAT: les commandesALTER SESSION SET TIMESTAMP_NTZ_OUTPUT_FORMAT = <format>etALTER SESSION SET TIME_OUTPUT_FORMAT = <format>peuvent être utilisées pour modifier les formats utilisés par défaut par Snowflake pour la session en cours. Les modifier pour inclure le nombre souhaité de chiffres de précision modifie le résultat des exécutions futures de PERIOD_UDF pour la session en cours.
Exemple de code¶
Code d’entrée :¶
Code généré :¶
Meilleures pratiques¶
Étant donné que le comportement de
PERIODet ses fonctions associées sont émulés à l’aide de varchar, nous vous recommandons d’examiner les résultats obtenus pour vous assurer de leur exactitude.Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0055¶
Les formats pris en charge par Snowflake pour TO_CHAR diffèrent par rapport à Teradata et peuvent échouer ou avoir un comportement différent.
Note
Cet EWI est obsolète. Veuillez vous référer à la documentation SSC-FDM-TD0029.
Éléments de format qui dépendent des paramètres de session¶
Certains éléments de format Teradata sont mappés à des fonctions Snowflake qui dépendent de la valeur des paramètres de session. Pour éviter des différences fonctionnelles dans les résultats, vous devez définir ces paramètres de session sur les mêmes valeurs que celles définies dans Teradata. Les éléments de format identifiés qui sont mappés vers ce type de fonctions sont :
D : mappés vers la fonction
DAYOFWEEK, les résultats de cette fonction dépendent du paramètre de sessionWEEK_START. Par défaut, Teradata considère le dimanche comme le premier jour de la semaine, tandis que dans Snowflake, il s’agit du lundi.WW : mappée vers la fonction
WEEK, cette fonction dépend du paramètre de sessionWEEK_OF_YEAR_POLICY, qui est configuré par défaut pour utiliser l’ISO standard (la première semaine de l’année étant la première à contenir au moins quatre jours du mois janvier) mais qui, dans Teradata, est configuré pour considérer le 1er janvier comme le début de la première semaine.
To modify session parameters, use ALTER SESSION SET parameter_name = value. For more information, see the Snowflake session parameters reference.
Version à paramètre unique de TO_CHAR¶
La version à paramètre unique de TO_CHAR(Datetime) utilise les formats par défaut spécifiés dans les paramètres de session TIMESTAMP_LTZ_OUTPUT_FORMAT, TIMESTAMP_NTZ_OUTPUT_FORMAT, TIMESTAMP_TZ_OUTPUT_FORMAT et TIME_OUTPUT_FORMAT. Pour éviter des différences de comportement, veuillez les définir sur les mêmes valeurs que celles utilisées dans Teradata.
Pour TO_CHAR(Numeric), Snowflake génère la représentation varchar en utilisant les formats TM9 ou TME pour obtenir une représentation compacte du nombre. Teradata génère également des représentations compactes des nombres, de sorte qu’aucune action n’est requise.
Exemple de code¶
Code d’entrée :¶
Code généré :¶
Meilleures pratiques¶
Lorsque vous utilisez FF, essayez d’utiliser les types DateTime avec la même précision que celle que vous utilisez dans Teradata, ou ajoutez une précision à l’élément de format pour éviter un comportement différent.
Lorsque vous utilisez des éléments de format liés au fuseau horaire, utilisez le premier paramètre de type
TIMESTAMP_TZpour éviter un comportement différent. Gardez également à l’esprit que le typeTIMEne peut pas avoir d’informations de fuseau horaire dans Snowflake.Définissez les paramètres de session nécessaires avec les valeurs par défaut de Teradata pour éviter des comportements différents.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0057¶
Les données binaires dans NEW JSON ne sont pas prises en charge.
Gravité¶
Faible
Description¶
La fonction NEW JSON accepte les données JSON représentées sous forme de chaîne ou au format binaire. Lorsque les données sont dans leur représentation binaire, la fonction n’est pas transformée, car ce format binaire n’est pas valide dans Snowflake étant donné qu’il ne peut pas interpréter les métadonnées relatives à l’objet JSON. Pour plus d’informations à ce sujet, consultez la [documentation] NEW JSON de Teradata (https://docs.teradata.com/r/C8cVEJ54PO4~YXWXeXGvsA/QpXrJfufgZ4uyeXFz7Rtcg).
Exemple de code¶
Code d’entrée¶
Code généré¶
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0059¶
Le fuseau horaire par défaut de l’utilisateur de Snowflake peut nécessiter une configuration pour correspondre à la valeur de Teradata.
Gravité¶
Faible
Description¶
Comme pour Teradata, la définition d’une valeur de fuseau horaire par défaut pour l’utilisateur fera démarrer les sessions avec ce fuseau horaire, jusqu’à ce qu’une nouvelle valeur soit définie pour la session.
Cet avertissement est généré pour rappeler que le même fuseau horaire que celui défini pour l’utilisateur dans Teradata doit être défini pour l’utilisateur Snowflake. Pour ce faire, veuillez utiliser la requête suivante dans Snowflake : ALTER SESSION SET TIMEZONE 'equivalent_timezone'. Rappelez-vous que Snowflake n’accepte que la base de données de fuseaux horaires IANA.
Exemple de code¶
Code d’entrée :¶
Code généré :¶
Meilleures pratiques¶
N’oubliez pas de définir le fuseau horaire par défaut de l’utilisateur sur un fuseau horaire équivalent à celui défini pour l’utilisateur Teradata.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0060¶
JSON_TABLE non transformée. Les noms des colonnes n’ont pas pu être récupérés depuis les informations sémantiques.
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Gravité¶
Faible
Description¶
La fonction JSON_TABLE peut être transformée par SnowConvert AI. Cependant, cette transformation nécessite de connaître le nom des colonnes qui sont sélectionnées dans la sous-requête JSON_TABLE ON.
Ce message est généré pour avertir l’utilisateur que les noms des colonnes n’ont pas été explicitement placés dans la sous-requête (par exemple, SELECT * a été utilisé) et que les informations sémantiques des tables référencées n’ont pas été trouvées, ce qui signifie que les noms des colonnes n’ont pas pu être extraits.
Si vous voulez savoir comment charger des données JSON dans une table, consultez cette page.
Exemple de code¶
Code d’entrée :¶
Code généré :¶
Meilleures pratiques¶
Veuillez vérifier si le code fourni à SnowConvert AI est complet. Si vous n’avez pas fourni la définition de table, veuillez réexécuter le code avec la définition de table présente.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0061¶
La transformation TD_UNPIVOT nécessite des informations de colonnes qui n’ont pas pu être trouvées. Colonnes manquantes dans le résultat.
Gravité¶
Faible
Description¶
SnowConvert AI prend en charge et transforme la fonction TD_UNPIVOT, qui peut être utilisée pour représenter les colonnes d’une table sous forme de lignes.
Cependant, pour fonctionner, cette transformation a besoin d’informations sur la table et les colonnes de la table ou, plus précisément, des noms des colonnes. Lorsque ces informations ne sont pas présentes, la transformation peut rester incomplète, avec des colonnes manquantes dans le résultat. Dans ce cas, cet EWI est généré.
Exemple de code¶
Code d’entrée :¶
Code généré :¶
Meilleures pratiques¶
Il existe deux façons de fournir des informations sur les colonnes à l’outil de conversion : placez la spécification de la table dans le même fichier que l’appel TD_UNPIVOT, ou spécifiez une liste de colonnes dans la requête SELECT de l’expression ON au lieu de SELECT * ou du nom de la table.
Ce problème peut être ignoré en toute sécurité si ALL les colonnes de la/des table(s) d’entrée ne sont pas pivotées. Sinon, le résultat présentera des colonnes manquantes.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0063¶
Le chemin JSON n’a pas été reconnu.
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Gravité¶
Medium
Description¶
Ce message s’affiche lorsque SnowConvert AI ne peut pas désérialiser un chemin JSON, car la chaîne n’a pas le format JSON attendu.
Exemple de code¶
Code d’entrée :¶
Code généré :¶
Meilleures pratiques¶
Vérifiez si le chemin JSON contient un caractère inattendu ou s’il ne présente pas le bon format.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0066¶
L’identificateur suivant comporte un ou plusieurs caractères d’échappement Unicode qui ne sont pas valides dans Snowflake.
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Gravité¶
Faible
Description¶
Ce message s’affiche lorsque SnowConvert AI transforme un identificateur délimité Unicode Teradata avec des caractères non valides dans Snowflake.
Exemple de code¶
Code d’entrée :¶
Code généré :¶
Meilleures pratiques¶
Utilisez des identificateurs avec des caractères Unicode valides dans Snowflake.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0068¶
Snowflake ne prend pas en charge les profils, mais référence les rôles à la place.
Gravité¶
Medium
Description¶
Les profils Teradata permettent de définir plusieurs paramètres communs liés à la gestion de l’espace de stockage et des contraintes de mot de passe.
Cependant, Snowflake fonctionne avec une architecture Cloud et gère et optimise automatiquement le stockage, ce qui signifie qu’aucune personnalisation du stockage n’est effectuée du côté de l’utilisateur. De plus, Snowflake possède actuellement une politique de mot de passe définie qui s’applique à tous les mots de passe des utilisateurs et est non modifiable.
Cette erreur est générée lorsqu’une référence à un profil Teradata est trouvée pour indiquer qu’elle a été modifiée en référence au rôle de l’utilisateur, qui est l’approximation la plus proche d’un profil dans Snowflake (bien qu’il puisse y avoir des différences dans les résultats de la requête), à moins que le profil et les noms de rôles d’un utilisateur ne soient identiques.
Exemple de code¶
Code d’entrée :¶
Code généré :¶
Meilleures pratiques¶
Évitez de référencer des profils d’utilisateurs, car ils ne sont pas pris en charge. Les résultats de la requête seront différents, à moins que l’utilisateur n’ait le même nom pour son profil et son rôle.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0069¶
Les résultats ST_DISTANCE sont légèrement différents de ST_SPHERICALDISTANCE.
Note
Cet EWI est obsolète. Veuillez vous référer à la documentation SSC-FDM-TD0031.
Gravité¶
Faible
Description¶
La fonction ST_SPHERICALDISTANCE de Teradata calcule la distance entre deux coordonnées sphériques sur la planète en utilisant la formule Haversine. De l’autre côté, la fonction ST_DISTANCE de Snowflake n’utilise pas la formule Haversine pour calculer la distance minimale entre deux points géographiques.
Exemple de code¶
Code d’entrée :¶
Code généré¶
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0070¶
Une instruction de retour a été ajoutée à la fin de la section Label pour assurer le même flux d’exécution.
Note
Cet EWI est obsolète. Veuillez vous référer à la documentation SSC-FDM-TD0030.
Gravité¶
Medium
Description¶
Lorsqu’une instruction Goto est remplacée par une section Label et ne contient pas d’instruction de retour, cette dernière est ajoutée à la fin de la section pour assurer le même flux d’exécution.
BTEQ est exécuté après une commande Goto. Les instructions entre la commande Goto et la commande Label avec le même nom sont ignorées. Ainsi, afin d‘éviter que ces instructions ne soient exécutées, la section Label doit contenir une instruction de retour.
De plus, il convient de mentionner que la commande Goto ignore toutes les autres instructions, à l’exception de l’instruction Label avec le même nom, qui marque la reprise de l’exécution. Par conséquent, l’exécution ne reprendra jamais dans une section Label définie avant la commande Goto.
Exemple de code¶
Code d’entrée :¶
Code généré¶
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0076¶
L’utilisation de tables étrangères n’est pas prise en charge dans Snowflake.
Gravité¶
Medium
Description¶
Les tables étrangères permettent l’accès aux données du stockage d’objets externe, telles que les données semi-structurées et non structurées dans Amazon S3, le stockage Azure Blob et Google Cloud Storage. Cette syntaxe n’est pas prise en charge dans Snowflake. Toutefois, d’autres alternatives peuvent être utilisées à la place dans Snowflake, telles que les tables externes, les tables Iceberg et les tables standards.
Exemple de code¶
Code d’entrée :¶
Code généré :¶
Meilleures pratiques¶
Au lieu des tables étrangères dans Teradata, vous pouvez utiliser des tables externes Snowflake. Les tables externes référencent des fichiers de données situés dans un data lake de stockage Cloud (Amazon S3, Google Cloud Storage ou Microsoft Azure). Cela permet d’interroger des données stockées dans des fichiers d’un lac de données comme si elles se trouvaient dans une base de données. Les tables externes peuvent accéder aux données stockées dans n’importe quel format pris en charge par les instructions COPY INTO <table>.
Les tables Iceberg de Snowflake constituent une autre alternative. Vous pouvez donc considérer les tables Iceberg comme des tables qui utilisent des formats ouverts et un stockage Cloud fourni par le client. Ces données sont stockées dans des fichiers Parquet.
Enfin, il existe les tables Snowflake standards, qui peuvent être une option pour couvrir la fonctionnalité des tables étrangères dans Teradata.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0077¶
La clause RESET WHEN n’est pas prise en charge dans ce scénario en raison de sa condition.
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Gravité¶
Medium
Description¶
SnowConvert AI ne prend actuellement en charge que les clauses RESET WHEN avec des conditions binaires (<=, >= ou =). Pour tout autre type de condition, comme IS NOT NULL, la clause RESET WHEN sera supprimée et un message d’erreur sera ajouté, car elle n’est pas prise en charge dans Snowflake.
Ce message d’erreur apparaît également lorsque la condition RESET WHEN fait référence à une expression dont la définition n’a pas été trouvée par l’outil de migration. Actuellement, l’outil prend en charge les références d’alias à une colonne qui a été définie dans la même requête.
Exemple de code¶
La condition n’est pas binaire¶
Code d’entrée :¶
Code généré¶
L’expression de la condition n’a pas été trouvée¶
Code d’entrée :¶
Code généré¶
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0079¶
La colonne de type Period requise est introuvable.
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Gravité¶
Faible
Description¶
Cet avertissement est affiché, car la colonne Period nécessaire pour répliquer la fonctionnalité de la clause Normalize n’a pas été trouvée.
Exemple de code¶
Code d’entrée :¶
Code généré¶
Meilleures pratiques¶
Pour corriger cet avertissement manuellement, vous devez simplement trouver la première colonne Period et supprimer toutes ses références, sauf là où elle est définie, puis remplacer PeriodColumn par la colonne trouvée.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0082¶
La fonction Translate utilisant l’encodage actuel n’est pas prise en charge.
Gravité¶
Medium
Description¶
L’utilisation de la fonction Translate utilisant les arguments d’encodage actuels n’est pas prise en charge dans Snowflake. La fonction est commentée pendant la traduction.
Exemple de code¶
Code d’entrée :¶
Code généré¶
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0083¶
Impossible de transformer deux ou plusieurs clauses Select complexes à la fois
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Gravité¶
Medium
Description¶
SnowConvert AI n’est pas capable de transformer deux ou plusieurs clauses SELECT complexes, car il est nécessaire de les mapper à une CTE ou à une clause FROM composite, qui entraîne la non compilation ou l’entrée dans un cycle logique du code mappé.
Qu’entend-on par clause complexe SELECT ?¶
Clauses qui doivent être mappées à une CTE ou à une clause FROM composite, comme NORMALIZE, EXPAND ON ou RESET WHEN.
Exemple de code¶
Code d’entrée :¶
Code généré¶
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0087¶
L’instruction GOTO a été supprimée en raison d’une inversion de l’instruction if.
Note
Cet EWI est obsolète. Veuillez vous référer à la documentation SSC-FDM-TD0026.
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Gravité¶
Medium
Description¶
Il est courant d’utiliser la commande GOTO avec les commandes IF et LABEL pour répliquer la fonctionnalité d’une instruction if SQL. Lorsqu’elles sont utilisées de cette manière, il est possible de les transformer directement en une instruction if, if-else, ou même if-elseif-else. Cependant, dans ces cas, les commandes GOTO deviennent inutiles et doivent être supprimées afin d’éviter qu’elles ne soient remplacées par une section LABEL.
Exemple de code¶
Code d’entrée :¶
-- Additional Params: --scriptsTargetLanguage SnowScript
.If ActivityCount = 0 THEN .GOTO endIf
DROP TABLE TABLE1;
.Label endIf
SELECT A FROM TABLE1;
Code généré¶
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0091¶
Expression transformée en conversion, avec des erreurs possibles dues à des dépendances manquantes.
Note
Certaines parties dans le code de sortie sont omises pour des raisons de clarté.
Gravité¶
Medium
Description¶
Dans les scripts Teradata, vous pouvez utiliser la syntaxe suivante pour CAST des expressions :
Malheureusement, cette syntaxe génère une ambiguïté lors d’une tentative de transformation d’une CAST en DATE ou TIME, car ces mots-clés se comportent également comme les fonctions CURRENT_DATE et CURRENT_TIME, respectivement.
Par conséquent, sans contexte sur l’expression à CAST, il n’existe pas de moyen sûr de faire la différence entre un cas réel de CAST et une fonction qui accepte DATE ou TIME comme paramètres.
Autrement dit, il est nécessaire de savoir si l’<expression> correspond à une colonne ou à une fonction définie par l’utilisateur (UDF). Pour ce faire, lors de la conversion du code, il convient d’ajouter le fichier CREATE TABLE ou CREATE FUNCTION dont dépend l’<expression>.
Par exemple, considérez l’instruction SELECT suivante. Sans contexte sur l’AMBIGUOUS_EXPR, nous n’avons aucun moyen de déterminer s’il s’agit d’un appel de fonction ou d’un CAST en DATE. Cependant, nous savons que COL1(DATE) est effectivement un CAST, car COL1 est une colonne de la table TAB.
Exemple de code¶
Code d’entrée :¶
Code généré¶
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0092¶
La traduction pour la table/vue intégrée Teradata n’est pas prise en charge actuellement.
Gravité¶
Faible
Description¶
Cet EWI est ajouté lorsque SnowConvert AI trouve une table système Teradata qui n’est pas traduite actuellement.
Exemple de code¶
Code d’entrée :¶
Code généré¶
Meilleures pratiques¶
Recherchez des équivalents dans les tables internes de Snowflake, telles que
Information_SchemaouSNOWFLAKE.ACCOUNT_USAGE.Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0093¶
Format non pris en charge, qui doit être mis à jour dans toutes les utilisations de conversion de type varchar.
Gravité¶
Élevé
Description¶
Cet EWI est ajouté lorsque la fonction CAST est utilisée pour convertir une expression numérique en un autre type numérique avec un format spécifié. Bien que le format n’ait pas d’impact sur la valeur numérique elle-même, si le résultat est ensuite converti en chaîne, le format prévu ne sera pas appliqué correctement. Par conséquent, il est nécessaire de mettre à jour toutes les instances où le résultat est converti en VARCHAR, afin de garantir que le format défini dans l’EWI est utilisé.
Exemple de code¶
Code d’entrée :¶
Code généré¶
Meilleures pratiques¶
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0094¶
The IMPORT command was not converted.
Gravité¶
Élevé
Description¶
This issue indicates that an .IMPORT command was not converted because it uses unsupported features. The original MLoad layout, DML, and import statements are commented out and each line is annotated with this EWI.
Features pending translation:
BINARYformatFASTLOADformat.TABLEtype layoutINMODoptionAXSMODoptionNon
INSERT-VALUESDML statements
Missing required definitions:
.LAYOUTdefinition was not found in the script.DML LABELwas not found in the script
Exemple de code¶
Teradata :¶
Snowflake Scripting:¶
Meilleures pratiques¶
Convert the source file to a supported format (
VARTEXT,TEXT, orUNFORMAT) before running SnowConvert AI.Manually rewrite the load using Snowflake stages and
COPY INTO.Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0095¶
DML statement in IMPORT command is pending translation.
Gravité¶
Medium
Description¶
This issue happens when a .IMPORT command uses a DML label that includes statements other than a basic INSERT ... VALUES (for example, UPDATE, DELETE, or more complex INSERT logic). In these cases, the converter will only transform the simple INSERT ... VALUES part into a COPY INTO statement for Snowflake. Any other DML statements are left in the output with a warning annotation, and are not automatically converted. This means that important logic—like updates or deletes—will not be migrated, which can affect your results. Please review and update your script to handle these cases, such as by using a MERGE statement for upserts.
Exemple de code¶
Teradata :¶
Snowflake Scripting:¶
Meilleures pratiques¶
Implement the equivalent upsert logic in Snowflake using
MERGE.Load data into a staging table first, then merge into the target table.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0096¶
COPY INTO requires an explicit target file name.
Gravité¶
Medium
Description¶
When the .IMPORT INFILE path consists solely of a bash variable (for example, ${FILE_PATH}) and no explicit file name can be inferred, this EWI is raised for the COPY INTO source. The converter cannot determine the file name to use in the stage path.
Exemple de code¶
Teradata :¶
Snowflake Scripting:¶
Meilleures pratiques¶
Adjust the original MLoad script so that the file name is explicit (separate directory and file name).
Use a literal file name with variable directory, for example,
.IMPORT INFILE ${DATA_DIR}/employees.csv ...Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.
SSC-EWI-TD0097¶
Local variables not supported in PUT or COPY INTO.
Gravité¶
Medium
Description¶
This issue indicates the use of local MLoad variables, such as &FILE_NAME, defined with .SET in INFILE paths. These cannot be resolved in the generated PUT or COPY INTO statements because Snowflake’s PUT command only supports literal paths or SnowSQL session variables (&{VAR}), not Snowflake Scripting variables (:var).
Exemple de code¶
Teradata :¶
Snowflake Scripting:¶
Meilleures pratiques¶
Replace local variables with bash variables (resolved by SnowSQL before execution).
Alternatively, hard-code the file name directly.
Si vous avez besoin de plus d’assistance, vous pouvez nous envoyer un e-mail à snowconvert-support@snowflake.com.