SnowConvert AI - Teradata - DDL¶
Dans cette section, vous trouverez la documentation pour la référence de traduction des éléments du langage de définition des données.
Index¶
Référence de traduction pour convertir l’instruction INDEX en Snowflake
Avertissement
Actuellement, l’instruction _ Create Index _ n’est pas convertie mais elle est analysée. De même, si votre code source comporte des instructions create index, celles-ci seront prises en compte dans le _ rapport d’évaluation. _
Exemple de Create Index
Entrée Teradata¶
Note
Pour des raisons architecturales, Snowflake ne prend pas en charge les index donc, SnowConvert AI supprimera tout le code lié à la création des index. Snowflake crée automatiquement des micro-partitions pour chaque table, ce qui permet d’accélérer les performances des opérations DML. L’utilisateur n’a pas à se soucier de créer ou de gérer ces micro-partitions.
En général, cela suffit pour obtenir de très bonnes performances de requête, mais il est possible de les améliorer en créant des clés de clustering de données. La page officielle de Snowflake fournit plus d’informations sur les micro-partitions et le clustering de données.
Index de la jointure¶
Description ¶
Dans SnowConvert AI, les index de jointure Teradata sont transformés en tables dynamiques Snowflake. Pour configurer correctement les tables dynamiques, deux paramètres essentiels doivent être définis : TARGET_LAG et WAREHOUSE. Si ces paramètres ne sont pas spécifiés dans les options de configuration, SnowConvert AI utilisera par défaut des valeurs préattribuées lors de la conversion, comme illustré dans l’exemple ci-dessous.
For more information, see the Teradata Join Indexes documentation.
For details on the necessary parameters, see the Snowflake CREATE DYNAMIC TABLE documentation.
Modèles d’échantillons de sources¶
Teradata
Index des jointures
Snowflake
Table dynamique
Problèmes connus¶
Aucune erreur connue n’a été détectée pour le moment.
Schéma¶
Description ¶
La traduction de l’instruction CREATE SCHEMA de Teradata à Snowflake est simple, car la syntaxe de base reste la même.
Modèles d’échantillons de sources¶
Teradata
Index des jointures
Snowflake
Table dynamique
Problèmes connus¶
Propriétés WITH de CREATE SCHEMA¶
Les propriétés WITH associées à l’instruction CREATE SCHEMA dans Teradata ne sont pas prises en charge dans Snowflake, car il n’existe pas de fonctionnalité équivalente.
Teradata
Index des jointures
Snowflake
Table dynamique
EWIs connexes¶
SSC-EWI-0073 : En attente de l’examen de l’équivalence fonctionnelle.
Vues¶
Référence de traduction pour la conversion de l’instruction VIEW Teradata en Snowflake
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description ¶
L’instruction VIEW de Teradata est traduite en syntaxe Snowflake VIEW.
For more information, see the Teradata VIEW documentation.
Modèles d’échantillons de sources¶
Créer une transformation de vue¶
Teradata
Vue¶
Snowflake
Vue¶
Balise de schéma personnalisé¶
Le schéma personnalisé est spécifié dans la section commentaire avant la spécification de la vue, avec une balise XML nommée « sc-view » qui contient uniquement la valeur du schéma et le nom de la vue séparés par un point « . » comme indiqué ci-dessous : <sc-view>SCHEMANAME.VIEWNAME</sc-view>
Le schéma personnalisé sera utilisé comme qualificatif de vue, puis le nom de la vue et tous les objets auxquels il est fait référence dans les requêtes FROM et les requêtes internes utiliseront ce schéma personnalisé. Il peut donc y avoir plusieurs vues portant le même nom, mais avec des balises personnalisées différentes. Exemple : deux vues portant le même nom prendront les informations de la balise du schéma personnalisé pour effectuer la performance.
Teradata¶
Vue¶
Snowflake¶
La transformation pour Snowflake dépendra du nom du schéma personnalisé MySchema, du nom de la base de données personnalisée MyDatabase ou de la non-sélection d’une base de données ou d’un schéma personnalisé dans les paramètres de conversion.
Custom Schema¶
Custom Database¶
Non sélectionné¶
Problèmes connus¶
1. Locking row for access logic difference¶
Dans Snowflake, l’accès aux objets et aux éléments est basé sur les utilisateurs et les privilèges.
EWIs connexes¶
SSC-FDM-0007 : Élément avec dépendances manquantes.
SSC-FDM-0019: Semantic information could not be loaded.
Tables¶
Référence de traduction pour la conversion de l’instruction TABLE Teradata en Snowflake
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description ¶
L’instruction TABLE de Teradata est traduite en syntaxe Snowflake TABLE.
For more information, see the Teradata CREATE TABLE documentation.
Modèles d’échantillons de sources¶
Création simple Table¶
Teradata
Table¶
Snowflake
Table¶
Clause relative au type de table - SET et MULTISET¶
La clause de type de Teradata détermine si les lignes dupliquées sont autorisées (MULTISET) ou non (SET).
Teradata¶
Table¶
Snowflake¶
Table¶
Tables temporaires volatiles et globales¶
Les tables temporaires volatiles et globales de Teradata sont utilisées pour le stockage temporaire des données. La différence réside dans le fait que la définition de la table (DDL) des tables temporaires globales est conservée dans le Data Dictionary, alors que la définition des tables volatiles n’est pas stockée.
Teradata¶
Table¶
Snowflake¶
Table¶
Option avec données et sans données¶
Teradata
Table¶
Snowflake
Table¶
Mots-clés limités et réservés de Snowflake¶
SnowConvert AI facilite des migrations SQL fluides vers Snowflake en abordant les défis associés aux mots-clés réservés. Conformément à la [documentation réservée et limitée des mots-clés] de Snowflake (https://docs.snowflake.com/en/sql-reference/reserved-keywords), certains mots-clés ne peuvent pas être utilisés comme noms de colonnes, noms de tables ou alias sans un traitement spécial. SnowConvert AI comprend une fonctionnalité pour s’assurer de la compatibilité du code SQLdans de tels cas.
Mots-clés réservés ANSI comme noms de colonne
Pour les noms de colonnes qui correspondent aux mots-clés réservés ANSI ou Snowflake, SnowConvert AI met automatiquement le nom de la colonne entre guillemets doubles (") pour respecter les règles syntaxiques de Snowflake. Cet ajustement garantit que les requêtes portant ces noms de colonnes sont correctement compilées dans Snowflake sans nécessiter une intervention manuelle.
Exemple :
Table¶
Snowflake
Table¶
Mots-clés réservés spécifiques à Snowflake
Columns that match Snowflake-specific reserved keywords (for example, CONSTRAINT, CURRENT_DATE, CURRENT_TIME) may still cause compilation issues even when wrapped in quotes. SnowConvert AI detects these instances and generates a warning with code SSC-EWI-0045, prompting users to review and potentially rename these columns for compatibility.
Exemple :
Table¶
Snowflake
Table¶
Problèmes connus¶
1. Create table options not supported¶
Comme le montre l’exemple « Simple Create Table », Snowflake ne prend pas en charge les options de création de table de Teradata. Elles sont supprimées.
2. Partition by performance issues¶
Dans l’exemple « Simple Create Table », l’instruction partition by est supprimée pour des raisons de performance.
3. Primary Index moved¶
Dans Teradata, la contrainte d’index primaire est déclarée à l’extérieur de l’instruction create table, mais dans Snowflake, elle est exigée à l’intérieur, comme le montre l’exemple « Simple Create Table ».
4. SET semantics not supported¶
Comme le montre l’exemple « Table Kind Clause - SET et MULTISET », Snowflake ne prend pas en charge la sémantique SET de Teradata. Elles sont supprimées.
5. Global Temporary table option not supported¶
Comme le montre l’exemple « Table temporaire volatile et globale », Snowflake ne prend pas en charge l’option de table temporaire globale de Teradata. Elle sera supprimée.
6. Compress unsupported¶
COMPRESS (value1. value2, value3) est supprimé car il n’est pas pris en charge.
7. On commit unsupported¶
On commit est supprimé parce qu’il n’est pas pris en charge.
8. Block compression unsupported¶
Block compression est supprimée car elle n’est pas prise en charge.
9. Normalize unsupported¶
Normalize est supprimé car il n’est pas pris en charge.
EWIs connexes¶
SSC-FDM-0009 : fonctionnalité GLOBAL TEMPORARY TABLE non prise en charge.
SSC-FDM-0019: Semantic information could not be loaded.
SSC-FDM-TD0024: La fonctionnalité Set table n’est pas prise en charge.
SSC-PRF-0007 : examen des performances CLUSTER BY.
SSC-EWI-0045: Le nom de la colonne est Mot-clé réservé de Snowflake.
WITH DEFAULT¶
Référence de traduction pour la conversion de la clause WITH DEFAULT Teradata dans les définitions de colonnes en Snowflake
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description ¶
La clause WITH DEFAULT de Teradata définit une valeur par défaut du système pour les colonnes qui sont insérées sans valeur. Cette valeur est généralement l’équivalent de zéro ou de vide.
Syntaxe :¶
Le tableau suivant présente les types de données de Teradata, leur type correspondant dans Snowflake et la valeur par défaut à définir en cas de prise en charge.
| Teradata | Snowflake | Default Value |
|---|---|---|
| BLOB[(n)] | BYTE | NOT SUPPORTED |
| BYTE[(n)] | BYTE | NOT SUPPORTED |
| VARBYTE[(n)] | BYTE | NOT SUPPORTED |
| BIGINT | BIGINT | 0 |
| BYTEINT | BYTEINT | 0 |
| DECIMAL [(n[,m])] | DECIMAL | 0 |
| DOUBLE PRECISION | DOUBLE PRECISION | 0 |
| FLOAT | FLOAT | 0 |
| INTEGER | INTEGER | 0 |
| NUMBER(n[,m]) | NUMBER | 0 |
| NUMBER[(*[,m])] | NUMBER | 0 |
| NUMERIC [(n[,m])] | NUMERIC | 0 |
| REAL | REAL | 0 |
| SMALLINT | SMALLINT | 0 |
| DATE | DATE | CURRENT_DATE |
| TIME [(n)] | TIME | CURRENT_TIME |
| TIMESTAMP [(n)] | TIMESTAMP | CURRENT_TIMESTAMP |
| TIMESTAMP WITH TIME ZONE | TIMESTAMP_TZ | LOCALTIMESTAMP |
| INTERVAL DAY [(n)] | VARCHAR(21) | '0DAY' |
| INTERVAL DAY [(n)] TO HOUR | VARCHAR(21) | '0DAY' |
| INTERVAL DAY [(n)] TO MINUTE | VARCHAR(21) | '0DAY' |
| INTERVAL DAY [(n)] TO SECOND | VARCHAR(21) | '0DAY' |
| INTERVAL HOUR [(n)] | VARCHAR(21) | '0HOUR' |
| INTERVAL HOUR [(n)] TO MINUTE | VARCHAR(21) | '0HOUR' |
| INTERVAL HOUR [(n)] TO SECOND | VARCHAR(21) | '0HOUR' |
| INTERVAL MINUTE [(n)] | VARCHAR(21) | '0MINUTE' |
| INTERVAL MINUTE [(n)] TO SECOND [(m)] | VARCHAR(21) | '0MINUTE' |
| INTERVAL MONTH | VARCHAR(21) | '0MONTH' |
| INTERVAL SECOND [(n,[m])] | VARCHAR(21) | '0SECOND' |
| INTERVAL YEAR [(n)] | VARCHAR(21) | '0YEAR' |
| INTERVAL YEAR [(n)] TO MONTH | VARCHAR(21) | '0YEAR' |
| CHAR[(n)] | CHAR | '' |
| CHARACTER(n) CHARACTER SET GRAPHIC | - | NOT SUPPORTED |
| CLOB | - | NOT SUPPORTED |
| CHAR VARYING(n) | VARCHAR | '' |
| LONG VARCHAR | - | NOT SUPPORTED |
| LONG VARCHAR CHARACTER SET GRAPHIC | - | NOT SUPPORTED |
| VARCHAR(n) | VARCHAR | '' |
| VARCHAR(n) CHARACTER SET GRAPHIC | - | NOT SUPPORTED |
| PERIOD(DATE) | VARCHAR(24) | NOT SUPPORTED |
| PERIOD(TIME [(n)]) | VARCHAR(24) | NOT SUPPORTED |
| PERIOD(TIMESTAMP [(n)]) | VARCHAR(24) | NOT SUPPORTED |
Modèles d’échantillons de sources¶
Teradata¶
Requête¶
Snowflake ¶
Requête¶
Problèmes connus¶
1. Unsupported types¶
Comme le montre la table de description, certains types ne sont pas pris en charge et aucune valeur par défaut ne sera définie lors de la transformation de la clause WITH DEFAULT.
EWIs connexes¶
SSC-EWI-0021 : Non pris en charge dans Snowflake.
SSC-EWI-0036 : Type de données converti en un autre type de données.
CREATE MACRO¶
Référence de traduction pour la conversion de CREATE MACRO Teradata en Exécution de scripts Snowflake
Description ¶
Teradata CREATE MACRO définit une ou plusieurs instructions qui sont couramment utilisées ou qui effectuent une opération complexe, ce qui permet d’éviter d’écrire plusieurs fois la même séquence d’instructions. La macro est exécutée lorsqu’elle est appelée par l’instruction EXECUTE.
For more information, see the Teradata CREATE MACRO documentation.
Échantillons de modèles de sources ¶
Données de configuration¶
Le code suivant est nécessaire à l’exécution des modèles d’échantillons présentés dans cette section.
Teradata¶
Snowflake¶
Macro de base ¶
Comme il n’y a pas d’objet macro dans Snowflake, l’outil de conversion transforme les macros Teradata en procédures stockées Snowflake Scripting. En outre, pour répliquer la fonctionnalité du jeu de résultats renvoyé, dans Snowflake Scripting, la requête censée renvoyer un ensemble de données à partir d’une macro est affectée à une variable RESULTSET qui sera ensuite renvoyée.
Teradata ¶
Requête¶
Résultat¶
Snowflake Scripting ¶
Requête¶
Résultat¶
Une macro appelle une autre macro ¶
SnowConvert AI prend en charge le scénario dans lequel une macro appelle une autre macro et, par transitivité, un jeu de résultats est renvoyé en obtenant les résultats depuis RESULT_SCAN(LAST_QUERY_ID()) de Snowflake.
Teradata¶
Requête¶
Résultat¶
Snowflake Scripting ¶
Requête¶
Résultat¶
Macro sans jeu de résultats¶
Toutes les macros ne sont pas destinées à renvoyer un jeu de résultats. Le scénario mentionné est également pris en charge.
Teradata¶
Requête¶
Résultat¶
Snowflake Scripting ¶
Requête¶
Résultat¶
La macro renvoie plusieurs jeux de résultats¶
Dans Teradata, les macros peuvent renvoyer plus d’un jeu de résultats à partir d’une seule macro.
Les procédures de Snowflake Scripting ne permettent de renvoyer qu’un seul jeu de résultats par procédure. Pour répliquer le comportement de Teradata, lorsqu’il y a deux ou plusieurs jeux de résultats à renvoyer, ils sont stockés dans des tables temporaires. La procédure Snowflake Scripting renvoie un tableau contenant le nom des tables temporaires.
Teradata¶
Requête¶
Jeu de résultats 1¶
Jeu de résultats 2¶
Snowflake Scripting ¶
Requête¶
Jeu de résultats 1¶
Visualize Result Sets¶
L’exécution de la procédure ci-dessus sur Snowflake renvoie un tableau contenant les noms des tables temporaires :
[ « RESULTSET_93D50CBB_F22C_418A_A88C_4E1DE101B500 », « RESULTSET_6BDE39D7_0554_406E_B52F_D9E863A3F15C »]
Il est nécessaire d’exécuter les requêtes suivantes pour afficher les jeux de résultats comme dans Teradata.
Requête¶
Jeu de résultats 1¶
Jeu de résultats 2¶
Problèmes connus ¶
Aucun problème n’a été constaté.
EWIs connexes¶
CREATE PROCEDURE¶
Référence de traduction pour la conversion de CREATE PROCEDURE Teradata en Exécution de scripts Snowflake
Description
L’instruction Teradata CREATE PROCEDURE et REPLACE PROCEDURE génère ou remplace une implémentation de procédure stockée et la compile.
For more information, see the Teradata CREATE PROCEDURE and REPLACE PROCEDURE documentation.
Échantillons de modèles de sources ¶
Données de configuration¶
Le code suivant est nécessaire à l’exécution des modèles d’échantillons présentés dans cette section.
Teradata¶
Snowflake¶
Procédure de base ¶
Teradata ¶
Requête¶
Résultat¶
Snowflake Scripting ¶
Requête¶
Résultat¶
Un seul paramètre ¶
Teradata¶
Requête¶
Résultat¶
Snowflake Scripting ¶
Requête¶
Résultat¶
Paramètres multiples ¶
Teradata¶
Requête¶
Résultat¶
Snowflake Scripting ¶
Requête¶
Résultat¶
Paramètres de sortie multiples avec jeux de résultats dynamiques ¶
Teradata¶
Requête¶
Résultat¶
 (1).png)
Snowflake Scripting ¶
Requête¶
Problèmes connus ¶
1. Accès aux données SQL
Par défaut, les procédures Snowflake prennent en charge l’exécution de tout type d’instruction SQL, y compris les instructions de lecture ou de modification de données, ce qui rend la clause d’accès aux données SQL non pertinente. Cette clause sera ignorée lors de la conversion de la procédure.
2. Objets de niveau supérieur dans le rapport d’évaluation
Les éléments (tables ou vues temporelles) des procédures stockées sont comptés dans le rapport d’évaluation en tant qu’objets de niveau supérieur. L’équipe SnowConvert AI travaille maintenant sur un correctif pour ce scénario.
EWIs connexes¶
SSC-EWI-0073 : En attente de l’examen de l’équivalence fonctionnelle.
SSC-FDM-0020 : Plusieurs jeux de résultats sont renvoyés dans des tables temporaires.