SnowConvert AI – Teradata – DDL¶
In diesem Abschnitt finden Sie die Dokumentation für die Übersetzungsreferenz von Elementen der Datendefinitionssprache.
Index¶
Übersetzungsreferenz für die Konvertierung der INDEX-Anweisung in Snowflake
Warnung
Derzeit wird die Anweisung _ Create Index _ nicht konvertiert, aber geparst. Wenn Ihr Quellcode außerdem Anweisungen Create Index enthält, werden diese im _ Assessment Report _ berücksichtigt.
Beispiel für Index erstellen
Teradata-Eingabe¶
Bemerkung
Aus architektonischen Gründen unterstützt Snowflake keine Indizes, sodass SnowConvert AI den gesamten Code entfernt, der mit der Erstellung von Indizes verbunden ist. Snowflake erstellt automatisch Mikropartitionen für jede Tabelle, um die Leistung von DML-Operationen zu beschleunigen. Benutzende müssen sich so nicht um die Erstellung oder Verwaltung dieser Mikropartitionen kümmern.
Normalerweise reicht dies aus, um eine sehr gute Abfrageleistung zu erzielen. Es gibt jedoch Möglichkeiten, diese zu verbessern, indem Sie Gruppierungsschlüssel für Daten erstellen. Auf der offiziellen Seite von Snowflake finden Sie weitere Informationen über Mikropartitionen und Data Clustering.
Join Index¶
Beschreibung ¶
In SnowConvert AI werden Teradata-Join-Indizes in dynamische Snowflake-Tabellen umgewandelt. Um dynamische Tabellen ordnungsgemäß zu konfigurieren, müssen zwei wichtige Parameter definiert werden: TARGET_LAG und WAREHOUSE. Wenn diese Parameter in den Konfigurationsoptionen nicht spezifiziert sind, verwendet SnowConvert AI bei der Konvertierung standardmäßig die vorab zugewiesenen Werte, wie im folgenden Beispiel gezeigt.
For more information, see the Teradata Join Indexes documentation.
For details on the necessary parameters, see the Snowflake CREATE DYNAMIC TABLE documentation.
Beispielhafte Quellcode-Muster¶
Teradata
Join-Index
Snowflake
Dynamische Tabelle
Bekannte Probleme¶
Zur Zeit sind keine Fehler bekannt.
Schema¶
Beschreibung ¶
Die Übersetzung der Anweisung CREATE SCHEMA von Teradata nach Snowflake ist einfach, da die grundlegende Syntax dieselbe bleibt.
Beispielhafte Quellcode-Muster¶
Teradata
Join-Index
Snowflake
Dynamische Tabelle
Bekannte Probleme¶
WITH-Eigenschaften von CREATE SCHEMA¶
Die WITH Eigenschaften, die in Teradata mit der Anweisung CREATE SCHEMA verbunden sind, werden in Snowflake nicht unterstützt, da es keine entsprechende Funktion gibt.
Teradata
Join-Index
Snowflake
Dynamische Tabelle
Zugehörige EWIs¶
[SSC-EWI-0073](../../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI. md#ssc-ewi-0073): Überprüfung der Funktionsäquivalenz ausstehend.
Ansichten¶
Übersetzungsreferenz zur Konvertierung der VIEW-Anweisung von Teradata in Snowflake
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Beschreibung ¶
Die VIEW-Anweisung von Teradata wird in die VIEW-Syntax von Snowflake übersetzt.
For more information, see the Teradata VIEW documentation.
Beispielhafte Quellcode-Muster¶
Transformation Create View¶
Teradata
Ansicht¶
Snowflake
Ansicht¶
Benutzerdefiniertes Schema-Tag¶
Das benutzerdefinierte Schema wird im Kommentarbereich vor der Spezifikation der Ansicht angegeben, und zwar mit einem XML Tag namens „sc-view“, das nur den Wert des Schemas und den Namen der Ansicht, getrennt durch einen Punkt „ .“, enthält, wie unten gezeigt: <sc-view>SCHEMANAME.VIEWNAME</sc-view>
Das benutzerdefinierte Schema wird als Qualifizierer für die Ansicht verwendet. Der Name der Ansicht und alle Objekte, auf die in den Abfragen von FROM und den inneren Abfragen verwiesen wird, verwenden dann dieses benutzerdefinierte Schema. Es kann also mehrere Ansichten mit demselben Namen, aber mit unterschiedlichen benutzerdefinierten Tags geben. Beispiel: zwei Ansichten mit demselben Namen verwenden die benutzerdefinierten Schema-Tag-Informationen, um die Übersetzung durchzuführen.
Teradata¶
Ansicht¶
Snowflake¶
Die Transformation für Snowflake variiert je nach dem benutzerdefinierten Schemanamen MySchema, dem benutzerdefinierten Datenbanknamen MyDatabase oder der Nichtauswahl einer benutzerdefinierten Datenbank oder eines Schemas in den Konvertierungseinstellungen.
Custom Schema¶
Custom Database¶
Nicht ausgewählt¶
Bekannte Probleme¶
1. Locking row for access logic difference¶
In Snowflake basiert der Zugriff auf Objekte und Elemente auf Benutzern und Berechtigungen.
Zugehörige EWIs¶
SSC-FDM-0007: Element mit fehlenden Abhängigkeiten.
SSC-FDM-0019: Semantic information could not be loaded.
Tabellen¶
Übersetzungsreferenz zur Konvertierung der TABLE-Anweisung von Teradata in Snowflake
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Beschreibung ¶
Die TABLE-Anweisung von Teradata wird in die TABLE-Syntax von Snowflake übersetzt.
For more information, see the Teradata CREATE TABLE documentation.
Beispielhafte Quellcode-Muster¶
Einfaches Create Table¶
Teradata
Tabelle¶
Snowflake
Tabelle¶
Tabellentyp-Klausel - SET und MULTISET¶
Die Typklausel von Teradata bestimmt, ob doppelte Zeilen erlaubt sind (MULTISET) oder nicht (SET).
Teradata¶
Tabelle¶
Snowflake¶
Tabelle¶
Flüchtige und globale temporäre Tabellen¶
Die Tabellen Volatile und Global Temporary von Teradata werden für die temporäre Speicherung von Daten verwendet. Der Unterschied besteht darin, dass die Tabellendefinition (DDL) von globalen temporären Tabellen im Data Dictionary gespeichert wird, während die Definition von flüchtigen Tabellen nicht gespeichert wird.
Teradata¶
Tabelle¶
Snowflake¶
Tabelle¶
Mit Daten und ohne Datenoption¶
Teradata
Tabelle¶
Snowflake
Tabelle¶
Snowflake’s reservierte & eingeschränkte Schlüsselwörter¶
SnowConvert AI ermöglicht nahtlose SQL-Migrationen zu Snowflake, indem Probleme im Zusammenhang mit reservierten Schlüsselwörtern behoben werden. Gemäß der Dokumentation zu reservierten und beschränkten Schlüsselwörtern von Snowflake können bestimmte Schlüsselwörter ohne spezielle Behandlung nicht als Spaltennamen, Tabellennamen oder Aliasse verwendet werden. SnowConvert AI umfasst Funktionen, um die SQL-Code-Kompatibilität in solchen Fällen sicherzustellen.
Reservierte ANSI Schlüsselwörter als Spaltennamen
Bei Spaltennamen, die mit ANSI oder reservierten Snowflake-Schlüsselwörtern** übereinstimmen, setzt SnowConvert AI den Spaltennamen automatisch in doppelte Anführungszeichen ("), um den Syntaxregeln von Snowflake zu entsprechen. Diese Anpassung stellt sicher, dass Abfragen mit diesen Spaltennamen in Snowflake korrekt kompiliert werden, ohne dass ein manuelles Eingreifen erforderlich ist.
Beispiel:
Tabelle¶
Snowflake
Tabelle¶
Snowflake-spezifische reservierte Schlüsselwörter
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.
Beispiel:
Tabelle¶
Snowflake
Tabelle¶
Bekannte Probleme¶
1. Create table options not supported¶
Wie im Beispiel „Einfaches Create Table“ gezeigt, unterstützt Snowflake die Optionen zum Erstellen von Teradata-Tabellen nicht. Sie werden entfernt.
2. Partition by performance issues¶
Im Beispiel „Einfaches Create Table“ wird die Anweisung partition by aufgrund von Leistungserwägungen entfernt.
3. Primary Index moved¶
In Teradata wird die Primärindexeinschränkung außerhalb der Anweisung create table deklariert, in Snowflake muss sie jedoch darin enthalten sein, wie im Beispiel „Einfaches Create Table“ gezeigt.
4. SET semantics not supported¶
Wie im Beispiel „Tabellentyp-Klausel - SET und MULTISET“ gezeigt, unterstützt Snowflake die Semantik von Teradata SET nicht. Sie werden entfernt.
5. Global Temporary table option not supported¶
Wie im Beispiel „Flüchtige und globale temporäre Tabelle“ gezeigt, unterstützt Snowflake die Option „Globale temporäre Tabelle“ von Teradata nicht. Sie wird entfernt.
6. Compress unsupported¶
COMPRESS (vaue1, value, value3) wird entfernt, da es nicht unterstützt wird.
7. On commit unsupported¶
On Commit wird entfernt, da es nicht unterstützt wird.
8. Block compression unsupported¶
Die Blockkomprimierung wird entfernt, da sie nicht unterstützt wird.
9. Normalize unsupported¶
Normalisieren wird entfernt, da es nicht unterstützt wird.
Zugehörige EWIs¶
SSC-FDM-0009: Die GLOBAL TEMPORARY TABLE-Funktion wird nicht unterstützt.
SSC-FDM-0019: Semantic information could not be loaded.
SSC-FDM-TD0024: Die Set Table-Funktion wird nicht unterstützt.
SSC-PRF-0007: Überprüfung der CLUSTER BY-Leistung.
SSC-EWI-0045: Spaltenname ist ein von Snowflake reserviertes Schlüsselwort.
WITH DEFAULT¶
Übersetzungsreferenz zur Konvertierung der WITH DEFAULT-Klausel von Teradata in Spaltendefinitionen in Snowflake
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Beschreibung ¶
Die WITH DEFAULT-Klausel von Teradata setzt einen Systemstandardwert für Spalten, die ohne Werte eingefügt werden. Dieser Wert ist in der Regel gleich Null oder leer.
Syntax:¶
Die folgende Tabelle zeigt die Datentypen von Teradata, ihren entsprechenden Typ in Snowflake und den Standardwert, der eingestellt werden muss, wenn er unterstützt wird.
| 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 |
Beispielhafte Quellcode-Muster¶
Teradata¶
Abfrage¶
Snowflake ¶
Abfrage¶
Bekannte Probleme¶
1. Unsupported types¶
Wie aus der Tabelle in der Beschreibungstabelle hervorgeht, werden einige Typen nicht unterstützt und bei der Umwandlung der Klausel WITH DEFAULT wird kein Standardwert gesetzt.
Zugehörige EWIs¶
SSC-EWI-0021: Nicht in Snowflake unterstützt.
[SSC-EWI-0036](../../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI. md#ssc-ewi-0036): Datentyp in einen anderen Datentyp konvertiert.
CREATE MACRO¶
Übersetzungsreferenz zur Konvertierung der CREATE MACRO-Klausel von Teradata in Snowflake Scripting
Beschreibung ¶
Teradata CREATE MACRO definiert eine oder mehrere Anweisungen, die häufig verwendet werden oder einen komplexen Vorgang ausführen, wodurch vermieden wird, dass dieselbe Anweisungssequenz mehrmals geschrieben wird. Das Makro wird ausgeführt, wenn es von der EXECUTE-Anweisung aufgerufen wird.
For more information, see the Teradata CREATE MACRO documentation.
Beispielhafte Quellcode-Muster ¶
Datenkonfiguration¶
Der folgende Code ist erforderlich, um die Beispielmuster in diesem Abschnitt auszuführen.
Teradata¶
Snowflake¶
Grundlegendes Makro ¶
Da es in Snowflake kein Makroobjekt gibt, wandelt das Konvertierungstool Teradata-Makros in gespeicherte Prozeduren von Snowflake Scripting um. Um die Funktionalität des zurückgegebenen Resultset zu replizieren, wird in Snowflake Scripting die Abfrage, die ein Resultset von einem Makro zurückgeben soll, einer RESULTSET-Variablen zugewiesen, die dann zurückgegeben wird.
Teradata ¶
Abfrage¶
Ergebnis¶
Snowflake Scripting ¶
Abfrage¶
Ergebnis¶
Makro ruft ein anderes Makro auf ¶
SnowConvert AI unterstützt das Szenario, bei dem ein Makro ein anderes Makro aufruft und durch Transientität ein Resultset zurückgegeben wird, indem die Ergebnisse von RESULT_SCAN(LAST_QUERY_ID()) von Snowflake abgerufen werden.
Teradata¶
Abfrage¶
Ergebnis¶
Snowflake Scripting ¶
Abfrage¶
Ergebnis¶
Makro ohne Resultset¶
Nicht alle Makros sind dazu gedacht, ein Resultset zurückzugeben. Das erwähnte Szenario wird ebenfalls unterstützt.
Teradata¶
Abfrage¶
Ergebnis¶
Snowflake Scripting ¶
Abfrage¶
Ergebnis¶
Makro gibt mehrere Resultsets zurück¶
In Teradata können Makros mehr als ein Resultset aus einem einzigen Makro zurückgeben.
Bei Snowflake Scripting-Prozeduren kann nur ein Resultset pro Prozedur zurückgegeben werden. Um die Verhaltensweise von Teradata zu replizieren, werden zwei oder mehr Resultsets, die zurückgegeben werden sollen, in temporären Tabellen gespeichert. Die Snowflake Scripting-Prozedur gibt ein Array mit den Namen der temporären Tabellen zurück.
Teradata¶
Abfrage¶
Resultset 1¶
Resultset 2¶
Snowflake Scripting ¶
Abfrage¶
Resultset 1¶
Visualize Result Sets¶
Wenn Sie die obige Prozedur auf Snowflake ausführen, erhalten Sie ein Array mit temporären Tabellennamen zurück:
[ „RESULTSET_93D50CBB_F22C_418A_A88C_4E1DE101B500“, „RESULTSET_6BDE39D7_0554_406E_B52F_D9E863A3F15C“]
Sie müssen die folgenden Abfragen ausführen, um die Resultsets genau wie in Teradata anzuzeigen.
Abfrage¶
Resultset 1¶
Resultset 2¶
Bekannte Probleme ¶
Es wurden keine Probleme gefunden.
Zugehörige EWIs¶
CREATE PROCEDURE¶
Übersetzungsreferenz zur Konvertierung der CREATE PROCEDURE-Klausel von Teradata in Snowflake Scripting
Beschreibung
Die CREATE PROCEDURE- und REPLACE PROCEDURE-Anweisungen in Teradata erzeugen oder ersetzen die Implementierung einer gespeicherten Prozedur und kompilieren sie.
For more information, see the Teradata CREATE PROCEDURE and REPLACE PROCEDURE documentation.
Beispielhafte Quellcode-Muster ¶
Datenkonfiguration¶
Der folgende Code ist erforderlich, um die Beispielmuster in diesem Abschnitt auszuführen.
Teradata¶
Snowflake¶
Grundlegende Prozedur ¶
Teradata ¶
Abfrage¶
Ergebnis¶
Snowflake Scripting ¶
Abfrage¶
Ergebnis¶
Einzelner Out-Parameter ¶
Teradata¶
Abfrage¶
Ergebnis¶
Snowflake Scripting ¶
Abfrage¶
Ergebnis¶
Mehrere Out-Parameter ¶
Teradata¶
Abfrage¶
Ergebnis¶
Snowflake Scripting ¶
Abfrage¶
Ergebnis¶
Mehrere Out-Parameter mit dynamischen Resultsets ¶
Teradata¶
Abfrage¶
Ergebnis¶
 (1).png)
Snowflake Scripting ¶
Abfrage¶
Bekannte Probleme ¶
1. SQL-Datenzugriff
Standardmäßig unterstützen Snowflake-Prozeduren die Ausführung aller Arten von SQL-Anweisungen, einschließlich Anweisungen zum Lesen oder Ändern von Daten, so dass die SQL-Klausel für den Datenzugriff nicht relevant ist. Diese Klausel wird bei der Konvertierung der Prozedur ignoriert.
2. Objekte der obersten Ebene im Assessment-Bericht
Elemente (temporäre Tabellen oder Ansichten) innerhalb von gespeicherten Prozeduren werden im Assessment-Bericht als Objekte der obersten Ebene gezählt. Das SnowConvert AI-Team arbeitet derzeit an einer Lösung für dieses Szenario.
Zugehörige EWIs¶
[SSC-EWI-0073](../../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI. md#ssc-ewi-0073): Überprüfung der Funktionsäquivalenz ausstehend.
SSC-FDM-0020: In temporären Tabellen werden mehrere Resultsets zurückgegeben.