SnowConvert AI – Probleme mit Teradata¶
SSC-EWI-TD0001¶
Fehler bei rekursivem Vorwärtsalias.
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Schweregrad¶
Niedrig
Beschreibung¶
Diese EWI wird angezeigt, wenn SnowConvert AI eine Rekursion innerhalb aliasierter Ausdrücke erkennt und daher die Forward-Alias-Transformation, die für die korrekte Funktionsweise von Aliassen in der Snowflake-Umgebung erforderlich ist, nicht ausführen kann.
Ein rekursiver Alias tritt auf, wenn ein Ausdruck mit Alias einen anderen Alias enthält und der zweite Ausdruck mit Alias den ersten Alias enthält. Dies muss möglicherweise nicht so unbedeutend sein, wie das Beispiel zeigt, da die Rekursion im weiteren Verlauf mit transitive erfolgen kann.
Beispielcode¶
Hinweis: Rekursive Aliasse werden in Snowflake nicht unterstützt, einige einfache Instanzen jedoch schon.
Bemerkung
Beachten Sie, dass rekursiver Alias in Snowflake nicht unterstützt wird, einige einfache Instanzen jedoch schon. Siehe die Beispiele unten.
Der folgende Beispielcode funktioniert in Snowflake nach der Migration:
Teradata:¶
Snowflake Scripting:¶
Der folgende Beispielcode funktioniert jedoch nicht:
Teradata:¶
Snowflake Scripting:¶
Best Practices¶
Überprüfen Sie Ihren Code, und stellen Sie sicher, dass keine rekursiven Vorwärts-Aliasse vorhanden sind. Die EWI zeigt den Namen der ersten Instanz eines Alias an, der rekursive Referenzen enthält. Das bedeutet jedoch nicht, dass dies die einzige Instanz ist, die diese Referenzen in Ihrem Code enthält.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0002¶
Intervalltyp nicht unterstützt.
Diese EWI ist veraltet seit der SnowConvert AI-Version 28.1.100
Severity
Hoch
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
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0003
Collation wird in Trim-Funktionen nicht unterstützt; Fügen Sie die ursprüngliche Collation zum Funktionsresultat hinzu, um sie zu erhalten.
Severity
Niedrig
Description
In Snowflake unterstützen Trim-Funktionen (LTRIM, RTRIM oder TRIM) keine Collation, es sei denn, die zu entfernenden Zeichen sind leer oder Leerzeichen.
Wenn SnowConvert AI eine LTRIM, RTRIM oder TRIM LEADING, TRAILING-Funktion oder beide Funktionen in dem oben genannten Szenario erkennt, wird die ``COLLATE-Funktion automatisch erzeugt, um eine Kopie der Eingabespalte ohne Collation zu erstellen. Diese EWI wird erzeugt, um darauf hinzuweisen, dass die Collation der Spalte vor der Trim-Funktion entfernt wurde. Das bedeutet, dass das Ergebnis der Funktion keine Collation besitzt und dies die Ergebnisse späterer Vergleiche beeinflussen kann.
Example Code
Teradata:
Snowflake Scripting:
Best Practices
Um funktionale Unterschiede bei Vergleichen zu vermeiden, fügen Sie bitte die ursprüngliche Collation der Spalte zum Ergebnis der
TRIM-Funktion hinzu. Dies kann erreicht werden, indem Sie dieCOLLATE-Funktion verwenden und die ursprüngliche Spalten-Collation als zweites Argument angeben. Dieses Argument muss ein Literal-String mit dem Collation-Wert sein.Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0004
Nicht unterstützte SQL-Ausnahme im Continue-Handler.
Severity
Niedrig
Description
In Snowflake-Prozeduren gibt es keine gleichwertige Transformation für TeradataContinue Handler. Für einige unterstützte Ausnahmecodes führt SnowConvert AI eine Behandlung durch, um dieses Verhalten zu emulieren. Diese EWI wird zu Continue-Handler-Anweisungen hinzugefügt, wenn ein Ausnahmecode verwendet wird, der nicht unterstützt wird.
Example Code
Teradata:
Snowflake Scripting:
Best Practices
Überprüfen Sie die möglichen Anweisungen, die den Ausnahmecode auslösen können, und kapseln Sie diese in einem ähnlichen Codeblock ein, wie er im Continue Handler Translation Reference beschrieben ist.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0005
Die Anweisung wurde konvertiert, aber ihre Funktion ist noch nicht implementiert.
Severity
Kritisch
Description
Die Anweisung wurde erkannt und konvertiert, aber der konvertierte Code wird nicht die erwartete Funktion haben, da die Implementierung noch nicht abgeschlossen ist.
Die Warnung wurde hinzugefügt, damit dem Benutzer bewusst ist, dass das Skript bei Verwendung dieser Anweisung nicht die erwartete funktional gleichwertige Anweisung hat.
Beispielquellcode
BTEQ-Eingabecode:
Python-Ausgabecode:
Best Practices
Weitere Informationen finden Sie unter Übersetzungsspezifikation von BTEQ zu Python.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0006
Ungültiger Standardwert.
Severity
Niedrig
Description
Die Spaltenspezifikationen DEFAULT TIME / DEFAULT DATE / DEFAULT CURREN_DATE / DEFAULT DEFAULT CURRENT_TIME / DEFAULT CURRENT_TIMESTAMP werden für den Datentyp FLOAT nicht unterstützt.
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
Es sind keine weiteren Aktionen des Benutzers erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0007
GROUP BY-Klausel, die im Teradata-Modus für den Zeichenfolgenvergleich nicht unterstützt wird
Severity
Niedrig
Description
Diese Fehlermeldung weist auf ein mögliches Problem bei der Migration von Teradata SQL-Abfragen nach Snowflake hin, insbesondere im Zusammenhang mit Unterschieden darin, wie die GROUP BY-Klausel die Empfindlichkeit von Zeichenfolgenvergleichen im Teradata-Modus behandelt.
Im Teradata-Modus unterscheiden Zeichenfolgenvergleiche in GROUP BY-Klauseln standardmäßig nicht zwischen Groß- und Kleinschreibung (NOT CASESPECIFIC), während Snowflake-Vergleiche als groß-/kleinschreibungssensitiv behandelt werden, sofern Spalten nicht ausdrücklich mit einer COLLATE-Klausel (Groß-/Kleinschreibung nicht berücksichtigt) definiert wurden. Dieser Unterschied kann dazu führen, dass Abfragen, die auf einer Gruppierung ohne Berücksichtigung der Groß-/Kleinschreibung in Teradata basieren, in Snowflake unterschiedliche Ergebnisse liefern.
Example Code
Teradata:
Snowflake Scripting:
Erwartete Verhaltensunterschiede
Plattform |
Gruppierungsverhalten |
Beispiel für Ergebniszeilen |
|---|---|---|
Teradata-Modus |
Gruppiert ‚John‘, ‚JOHN‘ und ‚john‘ zusammen |
|
Snowflake |
Behandelt ‚John‘, ‚JOHN‘ und ‚john‘ separat |
|
Best Practices
Prüfen Sie GROUP BY-Klauseln mit Zeichenfolgenspalten bei der Migration vom Teradata-Modus, um das erwartete Gruppierungsverhalten sicherzustellen.
Hinweis: Wenn Sie Ausdrücke wie RTRIM(UPPER(first_name)) oder RTRIM(first_name) in der GROUP BY-Klausel verwenden, um eine gruppierende Auswertung unabhängig von Groß- und Kleinschreibung oder ohne führende und nachfolgende Leerzeichen zu erreichen, müssen Sie denselben Ausdruck konsequent in allen Teilen der Abfrage anwenden, in denen die Spalte verwendet wird. Beispiel:
Dies stellt sicher, dass Filtern, Auswählen und Gruppieren derselben Logik folgen und keine Abweichungen oder unerwarteten Ergebnisse auftreten.
Definieren Sie Spalten während der Tabellenerstellung mit COLLATE, wenn ein durchgehend groß-/kleinschreibungsunabhängiges Verhalten erforderlich ist.
**Aktivieren Sie die UseCollateForCaseSpecification CLI-Markierung oder die entsprechende Konvertierungseinstellung, um COLLATE für die Festlegung der Groß- und Kleinschreibung während der Konvertierung zu verwenden. Diese Option stellt sicher, dass die Festlegung der Groß- und Kleinschreibung (beispielsweise CASESPECIFIC oder NOT CASESPECIFIC) mithilfe von COLLATE-Funktionen anstelle von UPPER-Funktionen erfolgt. Weitere Informationen erhalten Sie unter CLI documentation oder conversion settings.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0008
Die Funktion zum Vergleichen von Zeichenfolgen wird nicht unterstützt
Severity
Niedrig
Description
Derzeit gibt es in Snowflake keine Äquivalenz für einige Zeichenfolgen-Vergleichsfunktionen.
Diese EWI wird jeweils bei folgenden Vergleichstypen hinzugefügt: jaro, n_gram, LD, LDWS, OSA, DL, hamming, LCS, jaccard, cosine und soundexcode.
Example Code
Teradata:
Snowflake Scripting:
Best Practices
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0009
TEMPORAL-Spalte nicht unterstützt.
Severity
Niedrig
Description
Teradata bietet Unterstützung für zeitliche Tabellen auf Spaltenebene unter Verwendung von abgeleiteten Zeitraumspalten. Diese Spalten werden in Snowflake nicht unterstützt.
Example Code
Teradata:
Snowflake Scripting:
Best Practices
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0010
UPPERCASE wird von Snowflake nicht unterstützt
Severity
Niedrig
Description
Dieses UPPERCASE-Spaltenattribut wird in Snowflake nicht unterstützt.
Example Code
Teradata:
Snowflake Scripting:
Best Practices
Da die
UPPERCASE-Klausel angibt, dass Zeichen, die als ‚aaa‘ eingegeben werden, als AAA gespeichert werden, kann eine mögliche Problemumgehung darin bestehen, bei allen Insert-Verweisen die UPPER-Funktion hinzuzufügen. Das Laden externer Daten durch ETL-Prozesse müsste ebenfalls geändert werden.Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0012
Binärwerte unterstützen keine Standardwerte.
Severity
Niedrig
Description
Diese EWI wird angezeigt, wenn SnowConvert AI den Datentyp BINARY zusammen mit einer DEFAULT-Wertspezifikation findet. Da Standardwerte in BINARY-Spalten nicht erlaubt sind, werden sie entfernt.
Example Code
Teradata:
Snowflake Scripting:
Best Practices
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0017
Globale Funktionalität zur Ablaufverfolgung temporärer Tabellen wird nicht unterstützt.
Severity
Niedrig
Description
Diese EWI wird angezeigt, wenn SnowConvert AI Create Table mit der GLOBAL TEMPORARY TRACE-Option findet. Lesen Sie die folgende Teradata-Dokumentation über die TRACE-Funktion. Da sie in Snowflake nicht unterstützt wird, wird sie entfernt.
Example Code
Teradata:
Snowflake Scripting:
Best Practices
Hinweis: Es könnte möglich sein, einige Ablaufverfolgungsfunktionen in Snowflake mithilfe einer
EVENT TABLEzu replizieren. Lesen Sie die folgende Snowflake-Dokumentation zu Protokollierung und Ablaufverfolgung.Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0020
Die Funktion Regexp_Substr unterstützt nur reguläre POSIX-Ausdrücke.
Bemerkung
Diese EWI ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-0009.
Schweregrad¶
Niedrig
Beschreibung¶
Derzeit gibt es in Snowflake keine Unterstützung für erweiterte reguläre Ausdrücke über die POSIX-Basic-Regular-Expression-Syntax hinaus.
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.
Beispielcode¶
Teradata:¶
Snowflake Scripting:¶
Best Practices¶
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.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0023¶
ACTIVITY_COUNT innerhalb von SELECT/SET INTO VARIABLE erfordert eine manuelle Korrektur
Schweregrad¶
Niedrig
Beschreibung¶
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.
Wie in der Übersetzungsspezifikation erläutert, gibt es eine Problemumgehung, um das Verhalten von ACTIVITY_COUNT zu emulieren.
Bei Verwendung von ACTIVITY_COUNT in einer SELECT/SET INTO VARIABLE-Anweisung, kann es nicht einfach durch die oben genannte Problemumgehung ersetzt werden.
Beispielcode¶
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¶
Manuelle Korrektur¶
Ein Teil der oben vorgestellten Problemumgehung kann verwendet werden, um weiterhin die Anzahl der eingefügten/aktualisierten/gelöschten Zeilen wie folgt zu erhalten:
Anstatt die vollständige Abfrage zu verwenden, muss diese manuell an die Snowflake-SELECT INTO VARIABLE-Syntax angepasst werden.
Sollten RESULT_SCAN(LAST_QUERY_ID()) oder ähnliche Ausdrücke falsche Ergebnisse liefern, überprüfen Sie SSC-FDM-TD0033(../functional-difference/teradataFDM.md#ssc-fdm-td0033), um zu erfahren, wie mögliche Einschränkungen bei der Verwendung von LAST_QUERY_ID gehandhabt werden können.
Best Practices¶
Passen Sie die vorgeschlagene Problemumgehung manuell an.
Überprüfen Sie SSC-FDM-TD0033(../functional-difference/teradataFDM.md#ssc-fdm-td0033), um mit möglichen Einschränkungen bei der Verwendung von
LAST_QUERY_IDumzugehen.Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0024¶
Die Abbruchanweisung wird aufgrund einer Aggregatfunktion nicht unterstützt.
Schweregrad¶
Niedrig
Beschreibung¶
Diese EWI wird angezeigt, wenn eine AGGREGATE-Funktion Teil einer ABORT-Anweisung in einer gespeicherten Prozedur ist. Die Anweisung wird auskommentiert.
Beispielcode¶
Teradata:¶
Snowflake Scripting:¶
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0025¶
Ausgabeformat nicht unterstützt.
Schweregrad¶
Niedrig
Beschreibung¶
Diese EWI wird angezeigt, wenn eine CAST-Funktion ein Ausgabeformat angibt, das von Snowflake Scripting nicht unterstützt wird.
Codebeispiel¶
Teradata:¶
Snowflake Scripting:¶
Best Practices¶
Prüfen Sie, ob der Ausgabecode funktional mit dem Originalcode übereinstimmt.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0027¶
Snowflake unterstützt keine in Teradata integrierten Zeitdimensionen
Schweregrad¶
Niedrig
Beschreibung¶
Diese EWI wird generiert, da Snowflake die in Teradata integrierten Zeitdimensionsattribute wie VALIDTIME oder TRANSACTIONTIME nicht unterstützt.
Beispielcode¶
Teradata-Eingabe:¶
Snowflake-Ausgabe:¶
Best Practices¶
Erstellen Sie TIMESTAMP-Spalten mit Standardwerten wie CURRENT_TIMESTAMP manuell.
Nutzen Sie den Einsatz von Table Streams. Diese können Datenänderungen an Tabellen sowie Metadaten zu jeder Änderung aufzeichnen. (Anleitung)
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0029¶
Die Funktion für Warteschlangentabellen wird nicht unterstützt.
Schweregrad¶
Niedrig
Beschreibung¶
Diese Warnung erscheint, wenn eine TABLE mit dem QUEUE-Attribut migriert wird. Das QUEUE-Schlüsselwort wird entfernt, da es in Snowflake nicht unterstützt wird.
Beispielcode¶
Eingabe:¶
Ausgabe:¶
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0031¶
Das Ergebnis kann abweichen, da der char-Typ in Teradata eine feste Länge hat
Schweregrad¶
Niedrig
Beschreibung¶
Da der Teradata-CHAR-Datentyp eine feste Länge hat, versuchen einige Funktionen wie LIKE die gesamte Spalte abzugleichen, statt nur das tatsächlich eingegebene Wort. Dies kann zu fehlerhaften Treffern führen. In Snowflake ist der CHAR-Typ hingegen variabel groß, was bedeutet, dass die LIKE-Funktionen stets nur die tatsächlich eingefügten Werte abgleichen. Nehmen Sie den folgenden Code als Beispiel:
Beispielcode¶
Eingabe:¶
Ausgabe:¶
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0034¶
SQL mit mehreren Anweisungen wird nicht unterstützt.
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Schweregrad¶
Niedrig
Beschreibung¶
SQL-Ausführung mit mehreren Anweisungen wird nicht unterstützt. Die Anfrage wurde als Transaktion behandelt.
Bemerkung
Die folgende EWI wird nur erzeugt, wenn das PL-Target-Language-Flag auf Javascript gesetzt ist: ‚–PLTargetLanguage Javascript‘
Beispielcode¶
Eingabe:¶
-- Additional Params: --PLTargetLanguage Javascript
REPLACE PROCEDURE proc1()
BEGIN
BEGIN REQUEST;
SELECT* FROM TABLE1;
END REQUEST;
END;
Ausgabe:¶
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0039¶
Eingabeformat nicht unterstützt.
Schweregrad¶
Medium
Beschreibung¶
Das angegebene Eingabeformat wird von Snowflake nicht unterstützt.
Beispielcode¶
Eingabe:¶
Ausgabe:¶
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0040¶
Das -Format in einer Tabelle wird nicht unterstützt.
Schweregrad¶
Niedrig
Beschreibung¶
Das angegebene Format wird nicht unterstützt.
Beispielcode¶
Eingabe:¶
Ausgabe:¶
SSC-EWI-TD0041¶
Die Trunc-Funktion wurde hinzugefügt, um sicherzustellen, dass ein ganzzahliger Wert verwendet wird.
Schweregrad¶
Niedrig
Beschreibung¶
Bei der Migration von Teradata nach Snowflake können Unterschiede in der Art und Weise auftreten, wie numerische Konvertierungen behandelt werden. In Teradata führt das Casten eines Wertes zu INTEGER automatisch dazu, dass jeder Dezimalteil abgeschnitten wird – selbst dann, wenn der ursprüngliche Wert eine Gleitkommazahl oder eine Zeichenkette mit einer Zahl ist. In Snowflake kann das direkte Casten einer nicht ganzzahligen Zahl oder eines Strings zu INTEGER zu Fehlern oder unerwarteten Ergebnissen führen, wenn der Wert nicht bereits eine Ganzzahl ist.
Um die Kompatibilität sicherzustellen, muss die TRUNC()-Funktion angewendet werden, bevor in INTEGER umgewandelt wird. Dadurch wird jeder Dezimalteil entfernt und eine sichere Umwandlung in eine Ganzzahl ermöglicht. Wenn der Ausgangswert jedoch nicht numerisch ist oder es sich um eine nicht numerische Zeichenkette handelt, können weiterhin Fehler auftreten, und eine manuelle Nachbearbeitung kann erforderlich sein. Beispiel: Wenn SnowConvert AI den Spaltentyp aufgrund fehlender Referenzen nicht ermitteln kann, müssen Sie die Konvertierung möglicherweise manuell anpassen.
Beispielcode¶
Eingabe:¶
Ausgabe:¶
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0046¶
Die integrierte Referenz wird in Snowflake nicht unterstützt.
Schweregrad¶
Medium
Beschreibung¶
Dieser Fehler tritt auf, wenn ein Verweis auf eine DBC-Tabelle besteht und die ausgewählte Spalte keine Äquivalenz in Snowflake hat.
Beispielcode¶
Eingabe:¶
Ausgabe:¶
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0049¶
TPT-Anweisung nicht verarbeitet.
Schweregrad¶
Hoch
Beschreibung¶
Eine DML-Anweisung in TPT konnte vom Tool nicht verarbeitet und konvertiert werden. Dies kann aus Gründen auftreten wie der Verwendung von Konkatenation mit Skriptvariablen oder dem Einsatz von Escape-Anführungszeichen innerhalb der DML-Anweisung.
Beispielcode¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Für dieses Problem können Sie die INSERT-Anweisung manuell formulieren. Da die DML-Anweisung derzeit noch nicht unterstützt wird, können Sie außerdem das SnowConvert AI-Team darum bitten, Unterstützung für diesen speziellen Fall hinzuzufügen.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0051¶
Das Ergebnis der Teradata-BYTES-Funktion unterscheidet sich von der Snowflake-LENGTH-Funktion bei Byte-Spalten.
Schweregrad¶
Niedrig
Beschreibung¶
Da der Teradata-Byte-Datentyp eine feste Länge hat, zählt die BYTES-Funktion immer die hinzugefügten abschließenden Nullen, die eingefügt werden, um kleinere Byte-Werte an die Spaltenlänge anzupassen. Dadurch wird die Größe der gesamten Spalte zurückgegeben – nicht die tatsächliche Größe des ursprünglich eingefügten Wertes. In Snowflake hat der Binary-Datentyp hingegen eine variable Größe, was bedeutet, dass die LENGTH-Funktion stets die Größe der tatsächlich eingefügten Werte zurückgibt. Nehmen Sie den folgenden Code als Beispiel:
Teradata:
Äquivalenter Code in Snowflake:
Beispielcode:¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Analysieren Sie die Verwendung der Ergebnisse der BYTES-Funktion; das Verhalten der Snowflake-LENGTH-Funktion war von Anfang an das gewünschte und es sind keine Änderungen erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0052¶
Die implizite Snowflake-Konvertierung in numerische unterscheidet sich von Teradata und kann bei Zeichenfolgen, die keine Literale sind, fehlschlagen
Schweregrad¶
Niedrig
Beschreibung¶
Sowohl in Teradata als auch in Snowflake können Zeichenfolgenwerte verwendet werden, die numerische Parameter erwarten. Diese Zeichenfolgen werden dann analysiert und in ihre numerischen Äquivalente konvertiert.
Es gibt jedoch Unterschiede darin, was die beiden Sprachen als gültige numerische Zeichenkette betrachten. Teradata ist dabei toleranter und verarbeitet erfolgreich Fälle wie leere bzw. nur aus Leerzeichen bestehende Strings, eingebettete Bindestriche, fehlende Ziffern in Mantisse oder Exponent, Währungszeichen, Zifferntrennzeichen oder die Angabe des Vorzeichens der Zahl erst nach den Ziffern. Beispielsweise sind die folgenden Zeichenfolgen gültig:
'1-2-3-4-5' -> 12345'$50' -> 50'5000-' -> -5000'1,569,284.55' -> 1569284.55
Snowflake wendet eine automatische, optimistische String-Konvertierung an und erwartet, dass die Zeichenfolgen entweder dem TM9- oder dem TME-Format entsprechen. Daher schlägt die Umwandlung in den meisten der genannten Fälle fehl. Um diese Unterschiede auszugleichen, verarbeitet SnowConvert AI Zeichenliterale, die an Funktionen übergeben werden, die eine implizite Umwandlung in numerische Werte durchführen, und generiert äquivalente Zeichenfolgen, die dem TM9- oder TME-Format entsprechen, sodass sie von Snowflake geparst werden können. Dies gilt nur für literale Zeichenfolgenwerte, d. h. für nicht literale Werte wird nicht garantiert, dass sie von Snowflake geparst werden.
Beispielcode¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Es sind keine weiteren Aktionen des Benutzers erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0053¶
Snowflake unterstützt nicht den Zeittyp, da alle Zeiträume stattdessen als varchar behandelt werden.
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Bemerkung
Diese EWI ist veraltet. Weitere Informationen finden Sie unter SSC-FDM-TD0036
Genauigkeit der generierten varchar-Darstellungen¶
PERIOD_UDF generiert die varchar-Darstellung eines Zeitraums unter Verwendung der in Snowflake angegebenen Standardformate für Zeitstempel und Zeiten. Dies bedeutet, dass Zeitstempel drei Genauigkeitsstellen haben und Zeitvariablen null haben. Daher können Sie feststellen, dass die Ergebnisse eine höhere/niedrigere Genauigkeit haben als erwartet. Es gibt zwei Optionen, um zu ändern, wie viele Genauigkeitsstellen in der resultierenden Zeichenfolge enthalten sind:
Verwenden Sie die Drei-Parameter-Version von PERIOD_UDF: Diese Überladung der Funktion nimmt den
PRECISIONDIGITS-Parameter entgegen, eine ganze Zahl zwischen 0 und 9, um zu steuern, wie viele Stellen des Bruchteils der Zeit im Ergebnis enthalten sein sollen. Beachten Sie, dass das Maximum in Teradata sechs beträgt, selbst wenn Snowflake bis zu neun Dezimalstellen der Genauigkeit unterstützt. Beispiel:
Aufrufe |
Ergebnis |
|---|---|
|
|
|
|
|
|
Ändern des Sitzungsparameters
TIMESTAMP_NTZ_OUTPUT_FORMATundTIME_OUTPUT_FORMAT: Die BefehleALTER SESSION SET TIMESTAMP_NTZ_OUTPUT_FORMAT = <format>undALTER SESSION SET TIME_OUTPUT_FORMAT = <format>kann verwendet werden, um die Formate zu ändern, die Snowflake standardmäßig für die aktuelle Sitzung verwendet. Wenn Sie diese Formate so ändern, dass sie die gewünschte Anzahl von Genauigkeitsziffern enthalten, ändert sich das Ergebnis zukünftiger Ausführungen von PERIOD_UDF für die aktuelle Sitzung.
Beispielcode¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Da das Verhalten von
PERIODund den zugehörigen Funktionen mithilfe von VARCHAR emuliert wird, empfehlen wir, die erhaltenen Ergebnisse zu überprüfen, um ihre Korrektheit sicherzustellen.Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0055¶
Von Snowflake unterstützte Formate für TO_CHAR unterscheiden sich von Teradata und können fehlschlagen oder ein anderes Verhalten aufweisen.
Bemerkung
Diese EWI ist veraltet. Weitere Informationen finden Sie unter SSC-FDM-TD0029
Formatierungselemente, die von Sitzungsparametern abhängen¶
Einige Elemente des Teradata-Formats werden Snowflake-Funktionen zugeordnet, die vom Wert der Sitzungsparameter abhängen. Um funktionale Unterschiede in den Ergebnissen zu vermeiden, sollten Sie diese Sitzungsparameter auf dieselben Werte setzen, die sie auch in Teradata haben. Identifizierte Formatelemente, die dieser Art von Funktionen zugeordnet sind:
D: Abgebildet auf die
DAYOFWEEK-Funktion hängen die Ergebnisse dieser Funktion vomWEEK_START-Sitzungsparameter ab. Standardmäßig betrachtet Teradata den Sonntag als ersten Wochentag, während es in Snowflake der Montag ist.WW: Abgebildet auf die
WEEK-Funktion hängt diese Funktion vom SitzungsparameterWEEK_OF_YEAR_POLICYab, der standardmäßig so eingestellt ist, dass er den ISO-Standard verwendet (die erste Woche des Jahres ist diejenige, die mindestens vier Tage des Januars enthält). In Teradata hingegen gilt der 1. Januar als Beginn der ersten Woche.
To modify session parameters, use ALTER SESSION SET parameter_name = value. For more information, see the Snowflake session parameters reference.
Einzelparameterversion von TO_CHAR¶
Die einparametrige Version von TO_CHAR(Datetime) verwendet die in den Sitzungsparametern angegebenen Standardformate TIMESTAMP_LTZ_OUTPUT_FORMAT, TIMESTAMP_NTZ_OUTPUT_FORMAT, TIMESTAMP_TZ_OUTPUT_FORMAT und TIME_OUTPUT_FORMAT. Um Unterschiede in der Verhaltensweise zu vermeiden, stellen Sie diese auf dieselben Werte ein, die auch in Teradata verwendet werden.
Für TO_CHAR(Numeric) erzeugt Snowflake die VARCHAR-Darstellung entweder mit dem TM9- oder TME-Format, um eine kompakte Repräsentation der Zahl zu erhalten. Teradata erzeugt ebenfalls kompakte Darstellungen der Zahlen, daher ist keine weitere Aktion erforderlich.
Beispielcode¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Wenn Sie FF verwenden, versuchen Sie entweder, DateTime-Typen mit derselben Genauigkeit zu verwenden wie in Teradata, oder fügen Sie dem Formatelement eine Genauigkeitsangabe hinzu, um unterschiedliches Verhalten zu vermeiden.
Verwenden Sie bei der Nutzung von Zeitzonen-bezogenen Formatelementen den ersten Parameter vom Typ
TIMESTAMP_TZ, um unterschiedliches Verhalten zu vermeiden. Denken Sie auch daran, dass derTIME-Typ in Snowflake keine Zeitzoneninformationen enthalten kann.Legen Sie die erforderlichen Sitzungsparameter mit den Standardwerten aus Teradata fest, um unterschiedliches Verhalten zu vermeiden.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0057¶
Binärdaten in NEW JSON werden nicht unterstützt
Schweregrad¶
Niedrig
Beschreibung¶
Die NEW JSON-Funktion akzeptiert JSON-Daten, die entweder als Zeichenkette oder im Binärformat vorliegen. Wenn die Daten in ihrer binären Darstellung vorliegen, wird die Funktion nicht transformiert, da dieses Binärformat in Snowflake nicht gültig ist – Snowflake kann die Metadaten des JSON-Objekts nicht interpretieren. Weitere Informationen hierzu finden Sie in der Teradata NEW JSON(https://docs.teradata.com/r/C8cVEJ54PO4~YXWXeXGvsA/QpXrJfufgZ4uyeXFz7Rtcg-[Dokumentation].
Beispielcode¶
Eingabecode¶
Generierter -Code¶
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0059¶
Die Standardzeitzone des Snowflake-Benutzers erfordert möglicherweise eine Konfiguration, die mit dem Teradata-Wert übereinstimmt
Schweregrad¶
Niedrig
Beschreibung¶
Ähnlich wie bei Teradata werden bei Einstellung eines Standardzeitzonenwertes für den Benutzer die Sitzungen mit dieser Zeitzone beginnen, bis ein neuer Wert für die Sitzung definiert wird.
Diese Warnung wird generiert, um daran zu erinnern, dass dieselbe Zeitzone, die für den Benutzer in Teradata festgelegt wurde, auch für den Snowflake-Benutzer gesetzt werden sollte. Verwenden Sie dazu bitte die folgende Abfrage in Snowflake: ALTER SESSION SET TIMEZONE = 'equivalent_timezone'. Beachten Sie, dass Snowflake nur Zeitzonen akzeptiert, die dem Standard der IANA Time Zone Database entsprechen.
Beispielcode¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Denken Sie daran, die Standardzeitzone des Benutzers auf eine Zeitzone einzustellen, die der für den Teradata-Benutzer eingestellten Zeitzone entspricht.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0060¶
JSON_TABLE nicht transformiert; Spaltennamen konnten nicht aus den semantischen Informationen abgerufen werden
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Schweregrad¶
Niedrig
Beschreibung¶
Die JSON_TABLE-Funktion kann von SnowConvert AI transformiert werden, jedoch erfordert diese Transformation, dass die Namen der Spalten bekannt sind, die in der JSON_TABLE ON-Unterabfrage ausgewählt werden.
Diese Nachricht wird erzeugt, um den Benutzer darauf hinzuweisen, dass die Spaltennamen nicht explizit in der Unterabfrage angegeben wurden (zum Beispiel wurde SELECT * verwendet) und die semantischen Informationen der referenzierten Tabellen nicht gefunden wurden, sodass die Spaltennamen nicht extrahiert werden konnten.
Wenn Sie wissen möchten, wie Sie JSON-Daten in eine Tabelle laden können, sehen Sie sich diese [Seite] an (https://docs.snowflake.com/en/user-guide/script-data-load-transform-json)
Beispielcode¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Bitte überprüfen Sie, ob der an SnowConvert AI übergebene Code vollständig ist. Falls Sie die Tabellendefinition nicht angegeben haben, führen Sie den Code bitte erneut aus, diesmal mit vorhandener Tabellendefinition.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0061¶
TD_UNPIVOT-Transformation erfordert Spalteninformationen, die nicht gefunden werden konnten, da Spalten im Ergebnis fehlen.
Schweregrad¶
Niedrig
Beschreibung¶
SnowConvert AI unterstützt und transformiert die TD_UNPIVOT-Funktion, die verwendet werden kann, um Spalten einer Tabelle als Zeilen darzustellen, nicht.
Diese Transformation erfordert jedoch Informationen zu den funktionierenden Tabellenspalten, insbesondere die Namen der Spalten. Wenn diese Informationen nicht vorhanden sind, kann die Transformation in einem unvollständigen Zustand verbleiben, in dem Spalten im Ergebnis fehlen, diese EWI wird in diesen Fällen erzeugt.
Beispielcode¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Es gibt zwei Möglichkeiten, dem Konvertierungstool die Informationen über Spalten bereitzustellen: Speichern Sie die Tabellenspezifikation in derselben -Datei wie den TD_UNPIVOT-Aufruf, oder geben Sie eine Spaltenliste in der SELECTAbfrage des ON-Ausdrucks an – anstelle von SELECT * oder dem Tabellennamen.
Dieses Problem kann ignoriert werden, wenn ALL Spalten aus der Eingabetabelle(n) nicht pivotiert werden, da im Ergebnis sonst Spalten fehlen.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0063¶
JSON-Pfad wurde nicht erkannt
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Schweregrad¶
Medium
Beschreibung¶
Diese Nachricht wird angezeigt, wenn SnowConvert AI einen JSON-Pfad nicht deserialisieren kann, da die Zeichenfolge nicht das erwartete JSON-Format enthält.
Beispielcode¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Prüfen Sie, ob der JSON-Pfad ein unerwartetes Zeichen enthält oder nicht das richtige Format hat.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0066¶
Der folgende Bezeichner enthält ein oder mehrere Unicode-Escape-Zeichen, die in Snowflake ungültig sind
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Schweregrad¶
Niedrig
Beschreibung¶
Diese Nachricht wird angezeigt, wenn SnowConvert AI einen Teradata Unicode Delimited Identifier mit ungültiger Zeichenfolge in Snowflake transformiert.
Beispielcode¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Verwenden Sie Bezeichner mit gültigen Unicode-Zeichen in Snowflake.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0068¶
Snowflake unterstützt keine Profile, sondern verweist stattdessen auf die Rolle
Schweregrad¶
Medium
Beschreibung¶
Mit Teradata-Profilen können Sie mehrere allgemeine Parameter in Bezug auf die Verwaltung von Speicherplatz und Kennworteinschränkungen definieren.
Allerdings arbeitet Snowflake mit einer Cloud-Architektur und verwaltet sowie optimiert den Speicher automatisch, was bedeutet, dass auf der Nutzerseite keine Speicheranpassungen vorgenommen werden. Außerdem hat Snowflake derzeit eine Kennwortrichtlinie definiert, die für alle Benutzerkennwörter gilt und nicht geändert werden kann.
Dieser Fehler wird erzeugt, wenn ein Verweis auf ein Teradata-Profil gefunden wird. Er soll darauf hinweisen, dass dieser Verweis in Snowflake durch einen Verweis auf die Rolle des Benutzers ersetzt wurde – die in Snowflake der nächstliegende Ersatz für ein Profil ist. Es kann jedoch zu Abweichungen in den Abfrageergebnissen kommen, sofern Profil- und Rollenname eines Benutzers nicht identisch sind.
Beispielcode¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Vermeiden Sie Verweise auf Benutzerprofile, da diese nicht unterstützt werden. Die Abfrageergebnisse unterscheiden sich ansonsten, es sei denn, der Benutzer verwendet für sein Profil und seine Rolle denselben Namen.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0069¶
ST_DISTANCE-Ergebnisse unterscheiden sich leicht von ST_SPHERICALDISTANCE
Bemerkung
Diese EWI ist veraltet. Weitere Informationen finden Sie unter SSC-FDM-TD0031
Schweregrad¶
Niedrig
Beschreibung¶
Die Teradata-Funktion ST_SPHERICALDISTANCE berechnet die Entfernung zwischen zwei sphärischen Koordinaten auf dem Planeten mithilfe der Haversine-Formel. Die Snowflake-ST_DISTANCE-Funktion verwendet hingegen nicht die Haversine-Formel, um die Mindestentfernung zwischen zwei geografischen Punkten zu berechnen.
Beispielcode¶
Eingabecode:¶
Generierter -Code¶
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0070¶
Am Ende des Label-Abschnitts wurde eine Rückgabeanweisung hinzugefügt, um den gleichen Ausführungsablauf sicherzustellen.
Bemerkung
Diese EWI ist veraltet. Weitere Informationen finden Sie unter SSC-FDM-TD0030
Schweregrad¶
Medium
Beschreibung¶
Wenn eine Goto-Anweisung durch einen Label-Abschnitt ersetzt wird und dieser keinen Return-Befehl enthält, wird am Ende des Abschnitts einer hinzugefügt, um denselben Ausführungsfluss sicherzustellen.
BTEQ nachdem ein Goto-Befehl ausgeführt wurde, werden die Anweisungen zwischen dem Goto-Befehl und dem Label-Befehl mit demselben Namen ignoriert. Um die Ausführung dieser Anweisungen zu vermeiden, sollte der Beschriftungsabschnitt also eine Rückgabeanweisung enthalten.
Darüber hinaus ist es Wert, dass der Goto-Befehl alle anderen Anweisungen überspringt, mit Ausnahme des Labels mit demselben Namen, das den Zeitpunkt angibt, an dem die Ausführung fortgesetzt wird. Daher wird die Ausführung niemals in einem Label-Abschnitt fortgesetzt, der vor dem Goto-Befehl definiert ist.
Beispielcode¶
Eingabecode:¶
Generierter -Code¶
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0076¶
Die Verwendung von Fremdtabellen wird in Snowflake nicht unterstützt.
Schweregrad¶
Medium
Beschreibung¶
[Fremdtabellen] (https://docs.teradata.com/r/Teradata-VantageTM-SQL-Data-Definition-Language-Syntax-and-Examples/September-2020/Table-Statements/CREATE-FOREIGN-TABLE) ermöglichen den Zugriff auf Daten in externem Objektspeicher, wie zum Beispiel semi-strukturierte und unstrukturierte Daten in Amazon S3, Azure Blob Storage und Google Cloud Storage. Diese Syntax wird in Snowflake nicht unterstützt. Es stehen jedoch andere Alternativen zur Verfügung, wie zum Beispiel External Tables, Iceberg Tables und Standardtabellen.
Beispielcode¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Anstelle von Fremdtabellen in Teradata können Sie Externe Snowflake-Tabellen verwenden. Externe Tabellen verweisen auf Datendateien in einem Data Lake-Cloudspeicher (Amazon S3, Google Cloud Storage oder Microsoft Azure). Dies ermöglicht das Abfragen von Daten, die in Dateien in einem Data Lake gespeichert sind, als befänden sie sich in einer Datenbank. Externe Tabellen können auf Daten zugreifen, die in einem beliebigen Format gespeichert sind, das von COPY INTO <table>-Anweisungen unterstützt wird.
Eine weitere Alternative sind Iceberg-Tabellen von Snowflake. Sie können sich also Iceberg-Tabellen als Tabellen vorstellen, die offene Formate und vom Kunden bereitgestellte Cloud-Speicher verwenden. Diese Daten werden in Parquet-Dateien gespeichert.
Schließlich gibt es noch die Snowflake-Standardtabellen, die eine Option sein können, um die Funktionalität von Fremdtabellen in Teradata abzudecken
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0077¶
RESET WHEN-Klausel wird in diesem Szenario aufgrund seiner Bedingung nicht unterstützt
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Schweregrad¶
Medium
Beschreibung¶
SnowConvert AI unterstützt derzeit nur RESET WHEN-Klauseln mit binären Bedingungen (<=, >oder =). Jede andere Art von Bedingung, wie etwa IS NOT NULL, führt dazu, dass die RESET WHEN-Klausel entfernt und eine Fehlermeldung hinzugefügt wird, da sie in Snowflake nicht unterstützt wird.
Diese Fehlermeldung erscheint außerdem, wenn die RESET WHEN-Bedingung auf einen Ausdruck verweist, dessen Definition vom Migrationstool nicht gefunden wurde. Derzeit unterstützt das Tool die Alias-Referenzen für eine Spalte, die in derselben Abfrage definiert wurde.
Beispielcode¶
Bedingung ist nicht binär¶
Eingabecode:¶
Generierter -Code¶
Bedingungsausdruck wurde nicht gefunden¶
Eingabecode:¶
Generierter -Code¶
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0079¶
Die erforderliche Spalte für den Zeitraum wurde nicht gefunden
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Schweregrad¶
Niedrig
Beschreibung¶
Diese Warnung wird angezeigt, weil die Period-Spalte, die zur Replikation der Funktion der Normalize-Klausel erforderlich ist, nicht gefunden wurde.
Beispielcode¶
Eingabecode:¶
Generierter -Code¶
Best Practices¶
Um diese Warnung manuell zu beheben, müssen Sie lediglich herausfinden, welche die erste Periodenspalte war, und alle ihre Verweise entfernen – außer dort, wo sie definiert ist. Anschließend ersetzen Sie PeriodColumn durch die gefundene Spalte.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0082¶
Die Übersetzungsfunktion mit der aktuellen Codierung wird nicht unterstützt
Schweregrad¶
Medium
Beschreibung¶
Die Verwendung der „Übersetzer“-Funktion unter Verwendung der aktuellen Codierungsargumente wird in Snowflake nicht unterstützt. Die Funktion wird während der Übersetzung auskommentiert.
Beispielcode¶
Eingabecode:¶
Generierter -Code¶
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0083¶
Sie ist nicht in der Lage, zwei oder mehr komplexe Select-Klauseln auf einmal zu transformieren
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Schweregrad¶
Medium
Beschreibung¶
SnowConvert AI ist nicht in der Lage, zwei oder mehr komplexe SELECT-Klauseln zu transformieren, da diese auf eine CTE- oder zusammengesetzte FROM-Klausel abgebildet werden müssten, was dazu führt, dass der abgebildete Code entweder nicht kompiliert oder in einen logischen Zyklus gerät.
Was verstehen wir unter einer komplexen SELECT-Klausel?¶
Diejenigen, die auf eine CTE- oder zusammengesetzte FROM-Klausel abgebildet werden müssen, wie zum Beispiel NORMALIZE, EXPAND ON oder RESET WHEN.
Beispielcode¶
Eingabecode:¶
Generierter -Code¶
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0087¶
GOTO-Anweisung wurde aufgrund von Anweisungsinversion entfernt.
Bemerkung
Diese EWI ist veraltet. Weitere Informationen finden Sie unter SSC-FDM-TD0026
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Schweregrad¶
Medium
Beschreibung¶
Es ist üblich, den GOTO-Befehl zusammen mit IF- und LABEL-Befehlen zu verwenden, um die Funktionalität einer SQL-If-Anweisung nachzubilden. Bei dieser Verwendung ist es möglich, sie direkt in eine if-, if-else- oder sogar eine if-elseif-else-Anweisung umzuwandeln. In diesen Fällen sind jedoch die GOTO-Befehle unnötig und sollten entfernt werden, um zu verhindern, dass sie durch einen LABEL-Abschnitt ersetzt werden.
Beispielcode¶
Eingabecode:¶
-- Additional Params: --scriptsTargetLanguage SnowScript
.If ActivityCount = 0 THEN .GOTO endIf
DROP TABLE TABLE1;
.Label endIf
SELECT A FROM TABLE1;
Generierter -Code¶
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0091¶
Als Typumwandlung (CAST) konvertierter Ausdruck, bei dem aufgrund fehlender Abhängigkeiten Fehler möglich sind.
Bemerkung
Einige Teile des Ausgabecodes werden aus Gründen der Übersichtlichkeit weggelassen.
Schweregrad¶
Medium
Beschreibung¶
In Teradata-Skripten können Sie die folgende Syntax für CAST-Ausdrücke verwenden:
Leider erzeugt diese Syntax eine Mehrdeutigkeit, wenn versucht wird, ein CAST in DATE oder TIME zu konvertieren, da diese Schlüsselwörter sich ebenfalls wie die Funktionen CURRENT_DATE bzw. CURRENT_TIME verhalten.
Daher gibt es ohne Kontext über den CAST-Ausdruck keine sichere Möglichkeit zu unterscheiden, ob es sich um einen tatsächlichen Fall von CAST handelt oder um eine Funktion, die DATE bzw. TIME als Parameter akzeptiert.
Mit anderen Worten: Es ist notwendig zu wissen, ob <expression> eine Spalte oder eine benutzerdefinierte Funktion (UDF) ist. Um dies zu erreichen, müssen Sie beim Konvertieren des Codes die CREATE TABLE oder CREATE FUNCTION hinzufügen, von denen <expression> abhängig ist.
Überprüfen Sie z. B. die folgende SELECT-Anweisung. Ohne Kontext zu AMBIGUOUS_EXPR können wir nicht bestimmen, ob wir es mit einem Funktionsaufruf oder mit CAST zu DATE zu tun haben. Wir wissen jedoch, dass COL1 (DATE) tatsächlich ein CAST ist, da COL1 eine Spalte aus der Tabelle TAB ist.
Beispielcode¶
Eingabecode:¶
Generierter -Code¶
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0092¶
Die Übersetzung von integrierten Teradata-Tabellen/Ansichten wird derzeit nicht unterstützt
Schweregrad¶
Niedrig
Beschreibung¶
Diese EWI wird hinzugefügt, wenn SnowConvert AI eine Teradata-Systemtabelle findet, die derzeit nicht übersetzt ist.
Beispielcode¶
Eingabecode:¶
Generierter -Code¶
Best Practices¶
Suchen Sie in den internen Tabellen von Snowflake, z. B.
Information_SchemaoderSNOWFLAKE.ACCOUNT_USAGEnach -Äquivalenten.Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0093¶
Das Format wird nicht unterstützt und muss bei allen Verwendungen von Varchar-Umwandlung aktualisiert werden.
Schweregrad¶
Hoch
Beschreibung¶
Diese EWI wird hinzugefügt, wenn die CAST-Funktion verwendet wird, um einen numerischen Ausdruck in einen anderen numerischen Typ mit einem bestimmten Format umzuwandeln. Das Format hat zwar keinen Einfluss auf den numerischen Wert selbst, aber wenn das Ergebnis anschließend in eine Zeichenfolge umgewandelt wird, wird das vorgesehene Format nicht korrekt angewendet. Daher ist es notwendig, alle Instanzen zu aktualisieren, in denen das Ergebnis in VARCHAR umgewandelt wird, sodass das in der EWI definierte Format verwendet wird.
Beispielcode¶
Eingabecode:¶
Generierter -Code¶
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0094¶
The IMPORT command was not converted.
Schweregrad¶
Hoch
Beschreibung¶
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
Beispielcode¶
Teradata:¶
Snowflake Scripting:¶
Best Practices¶
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.Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0095¶
DML statement in IMPORT command is pending translation.
Schweregrad¶
Medium
Beschreibung¶
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.
Beispielcode¶
Teradata:¶
Snowflake Scripting:¶
Best Practices¶
Implement the equivalent upsert logic in Snowflake using
MERGE.Load data into a staging table first, then merge into the target table.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0096¶
COPY INTO requires an explicit target file name.
Schweregrad¶
Medium
Beschreibung¶
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.
Beispielcode¶
Teradata:¶
Snowflake Scripting:¶
Best Practices¶
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 ...Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-EWI-TD0097¶
Local variables not supported in PUT or COPY INTO.
Schweregrad¶
Medium
Beschreibung¶
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).
Beispielcode¶
Teradata:¶
Snowflake Scripting:¶
Best Practices¶
Replace local variables with bash variables (resolved by SnowSQL before execution).
Alternatively, hard-code the file name directly.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.