SnowConvert AI – Teradata – Integrierte Funktionen¶
Diese Seite bietet eine Beschreibung der Übersetzung der integrierten Funktionen von Teradata in Snowflake
Bemerkung
Auf dieser Seite werden nur die Funktionen aufgelistet, die bereits von SnowConvert AI transformiert wurden. Wenn eine Funktion aus der Teradata-Dokumentation dort nicht aufgeführt ist, dann sollte sie als nicht unterstützt betrachtet werden.
Weitere Informationen zu integrierten Funktionen und ihren Snowflake-Äquivalenten finden Sie auch unter Allgemeine integrierte Funktionen.
Bemerkung
Einige Teradata-Funktionen haben kein direktes Äquivalent in Snowflake, sodass sie in ein funktionales UDF-Äquivalent umgewandelt werden. Diese können leicht durch das _UDF-Postfix im Namen der Funktion erkannt werden. Weitere Informationen zu den UDFs, die SnowConvert AI verwendet, finden Sie in diesem Git-Repository.
Aggregatfunktionen¶
Teradata |
Snowflake |
Hinweis |
|---|---|---|
AVG |
AVG |
|
CORR |
CORR |
|
COUNT |
COUNT |
|
COVAR_POP |
COVAR_POP |
|
COVAR_SAMP |
COVAR_SAMP |
|
GROUPING |
GROUPING |
|
KURTOSIS |
KURTOSIS |
|
MAXIMUM MAX |
MAX |
|
MINIMUM MIN |
MIN |
|
PIVOT |
PIVOT |
Prüfen Sie PIVOT. |
REGR_AVGX |
REGR_AVGX |
|
REGR_AVGY |
REGR_AVGY |
|
REGR_COUNT |
REGR_COUNT |
|
REGR_INTERCEPT |
REGR_INTERCEPT |
|
REGR_R2 |
REGR_R2 |
|
REGR_SLOPE |
REGR_SLOPE |
|
REGR_SXX |
REGR_SXX |
|
REGR_SXY |
REGR_SXY |
|
REGR_SYY |
REGR_SYY |
|
SKEW |
SKEW |
|
STDDEV_POP |
STDDEV_POP |
|
STDDEV_SAMP |
STDDEV_SAMP |
|
SUM |
SUM |
|
UNPIVOT |
UNPIVOT |
<p>Unpivot mit mehreren Funktionen<br>nicht in Snowflake unterstützt</p> |
VAR_POP |
VAR_POP |
|
VAR_SAMP |
VAR_SAMP |
Siehe Aggregatfunktionen
Arithmetische, trigonometrische, hyperbolische Operatoren/Funktionen¶
Teradata |
Snowflake |
Hinweis |
|---|---|---|
ABS |
ABS |
|
CEILING |
CEIL |
|
DEGREES |
DEGREES |
|
EXP |
EXP |
|
FLOOR |
FLOOR |
|
HYPERBOLIC ACOSH ASINH ATANH COSH SINH TANH |
HYPERBOLIC ACOSH ASINH ATANH COSH SINH TANH |
|
LOG |
LOG |
|
LN |
LN |
|
MOD |
MOD |
|
NULLIFZERO(Parameter) |
CASE WHEN param=0 THEN null ELSE param END |
|
POWER |
POWER |
|
RANDOM |
RANDOM |
|
RADIANS |
RADIANS |
|
ROUND |
ROUND |
|
SIGN |
SIGN |
|
SQRT |
SQRT |
|
TRUNC |
TRUNC_UDF |
|
TRIGONOMETRIC ACOS ASIN ATAN ATAN2 COS SIN TAN |
TRIGONOMETRIC ACOS ASIN ATAN ATAN2 COS SIN TAN |
|
ZEROIFNULL |
ZEROIFNULL |
Attribut-Funktionen¶
Teradata |
Snowflake |
Hinweis |
|---|---|---|
BIT_LENGTH |
BIT_LENGTH |
|
BYTE BYTES |
LENGTH |
|
CHAR CHARS CHARACTERS |
LEN |
|
CHAR_LENGTH CHARACTER_LENGTH |
LEN |
|
MCHARACTERS |
LENGTH |
|
OCTECT_LENGTH |
OCTECT_LENGTH |
Siehe Attributfunktionen
Bit/Byte Manipulationsfunktionen¶
Teradata |
Snowflake |
Hinweis |
|---|---|---|
BITAND |
BITAND |
|
BITNOT |
BITNOT |
|
BITOR |
BITOR |
|
BITXOR |
BITXOR |
|
GETBIT |
GETBIT |
Siehe Bit/Byte-Funktionen
Integriert (Systemfunktionen)¶
Teradata |
Snowflake |
Hinweis |
|---|---|---|
ACCOUNT |
CURRENT_ACCOUNT |
|
CURRENT_DATE CURDATE |
CURRENT_DATE |
|
CURRENT_ROLE |
CURRENT_ROLE |
|
CURRENT_TIME |
CURRENT_TIME |
|
CURRENT_TIMESTAMP |
CURRENT_TIMESTAMP |
|
DATABASE |
CURRENT_DATABASE |
|
DATE |
CURRENT_DATE |
|
NOW |
CURRENT_TIMESTAMP |
|
PROFILE |
CURRENT_ROLE |
Weitere Informationen zu dieser Transformation finden Sie unter SSC-EWI-TD0068. |
SESSION |
CURRENT_SESSION |
|
TIME |
CURRENT_TIME |
|
USER |
CURRENT_USER |
Siehe Integrierte Funktionen
Business-Kalender¶
Teradata |
Snowflake |
Hinweis |
|---|---|---|
DAYNUMBER_OF_MONTH(DatetimeValue, ‚COMPATIBLE‘) |
DAYOFMONTH |
|
DAYNUMBER_OF_MONTH(DatetimeValue, ‚ISO‘) |
DAYNUMBER_OF_MONTH_ISO_UDF |
|
DAYNUMBER_OF_MONTH(DatetimeValue, ‚TERADATA‘) |
DAYOFMONTH |
|
DAYNUMBER_OF_WEEK(DatetimeValue, ‚ISO‘) |
DAYOFWEEKISO |
|
DAYNUMBER_OF_WEEK(DatetimeValue, ‚COMPATIBLE‘) |
DAY_OF_WEEK_COMPATIBLE_UDF |
|
DAYNUMBER_OF_WEEK(DatetimeValue, ‚TERADATA‘) |
TD_DAY_OF_WEEK_UDF |
|
DAYNUMBER_OF_YEAR(DatetimeValue, ‚ISO‘) |
PUBLIC.DAY_OF_YEAR_ISO_UDF |
|
DAYNUMBER_OF\_YEAR(DatetimeValue) |
DAYOFYEAR |
|
QUARTERNUMBER_OF_YEAR |
QUARTER |
|
TD_SUNDAY(DateTimeValue) |
PREVIOUS_DAY(DateTimeValue, ‚Sunday‘) |
|
WEEKNUMBER_OF_MONTH |
WEEKNUMBER_OF_MONTH_UDF |
|
WEEKNUMBER_OF\_QUARTER(dateTimeValue) |
WEEKNUMBER_OF_QUARTER_UDF |
|
WEEKNUMBER_OF_QUARTER(dateTimeValue, ‚ISO‘) |
WEEKNUMBER_OF_QUARTER_ISO_UDF |
|
WEEKNUMBER_OF_QUARTER(dateTimeValue, ‚COMPATIBLE‘) |
WEEKNUMBER_OF_QUARTER_COMPATIBLE_UDF |
|
WEEKNUMBER_OF_YEAR(DateTimeValue, ‚ISO‘) |
WEEKISO |
|
YEARNUMBER_OF_CALENDAR(DATETIMEVALUE, ‚COMPATIBLE‘) |
YEAR |
|
YEARNUMBER_OF_CALENDAR(DATETIMEVALUE, ‚ISO‘) |
YEAROFWEEKISO |
Siehe Business-Kalender
Kalender-Funktionen¶
Teradata |
Snowflake |
Hinweis |
|---|---|---|
DAYNUMBER_OF\_WEEK(DatetimeValue) |
TD_DAY_OF_WEEK_UDF |
|
DAYNUMBER_OF_WEEK(DatetimeValue, ‚COMPATIBLE‘) |
DAY_OF_WEEK_COMPATIBLE_UDF |
|
QuarterNumber_Of_Year(DatetimeValue, ‚ISO‘) |
QUARTER_OF_YEAR_ISO_UDF(DatetimeValue) |
|
TD_DAY_OF_CALENDAR |
TD_DAY_OF_CALENDAR_UDF |
|
TD_DAY_OF_MONTH |
DAYOFMONTH |
|
TD_DAY_OF_WEEK |
TD_DAY_OF_WEEK_UDF |
|
TD_DAY_OF_YEAR |
DAYOFYEAR |
|
TD_MONTH_OF_CALENDAR(DateTimeValue) |
TD_MONTH_OF_CALENDAR_UDF(DateTimeValue) |
|
TD_WEEK_OF_CALENDAR(DateTimeValue) |
TD_WEEK_OF_CALENDAR_UDF(DateTimeValue) |
|
TD_WEEK_OF_YEAR |
WEEK_OF_YEAR_UDF |
|
TD_YEAR\_BEGIN(DateTimeValue) |
YEAR_BEGIN\_UDF(DateTimeValue) |
|
TD_YEAR_BEGIN(DateTimeValue, ‚ISO‘) |
YEAR_BEGIN_ISO_UDF(DateTimeValue) |
|
TD_YEAR\_END(DateTimeValue) |
YEAR_END\_UDF(DateTimeValue) |
|
TD_YEAR_END(DateTimeValue, ‚ISO‘) |
YEAR_END_ISO_UDF(DateTimeValue) |
|
WEEKNUMBER_OF\_MONTH(DateTimeValue) |
WEEKNUMBER_OF_MONTH_UDF(DateTimeValue) |
|
WEEKNUMBER_OF\_QUARTER(DateTimeValue) |
WEEKNUMBER_OF_QUARTER_UDF(DateTimeValue) |
|
WEEKNUMBER_OF_QUARTER(DateTimeValue, ‚ISO‘) |
WEEKNUMBER_OF_QUARTER_ISO_UDF(DateTimeValue) |
|
WEEKNUMBER_OF_QUARTER(DateTimeValue, ‚COMPATIBLE‘) |
WEEKNUMBER_OF_QUARTER_COMPATIBLE_UDF(DateTimeValue) |
|
WEEKNUMBER_OF\_YEAR(DateTimeValue) |
WEEK_OF_YEAR_UDF(DateTimeValue) |
|
WEEKNUMBER_OF_YEAR(DateTimeValue, ‚COMPATIBLE‘) |
WEEK_OF_YEAR_COMPATIBLE_UDF(DateTimeValue) |
Siehe Kalenderfunktionen
Case-Funktionen¶
Teradata |
Snowflake |
Hinweis |
|---|---|---|
COALESCE |
COALESCE |
Prüfen Sie Coalesce. |
NULLIF |
NULLIF |
Siehe Case-Funktionen
Vergleichsfunktionen¶
Teradata |
Snowflake |
Hinweis |
|---|---|---|
DECODE |
DECODE |
|
GREATEST |
GREATEST |
|
LEAST |
LEAST |
Siehe Vergleichsfunktionen
Datentypkonvertierung¶
Teradata |
Snowflake |
Hinweis |
|---|---|---|
CAST |
CAST |
|
CAST(DatetimeValue AS INT) |
DATE_TO_INT_UDF |
|
CAST (VarcharValue AS INTERVAL) |
INTERVAL_UDF |
Prüfen Sie In INTERVAL-Datentyp umwandeln |
TRYCAST |
TRY_CAST |
|
FROM_BYTES |
TO_NUMBER |
FROM_BYTES mit dem Parameter ASCII wird in Snowflake nicht unterstützt. |
Siehe Datentypkonvertierungen
Datentypkonvertierungsfunktionen¶
Teradata |
Snowflake |
Hinweis |
|---|---|---|
TO_BYTES(Input, ‚Base10‘) |
INT2HEX_UDF(Input) |
|
TO_NUMBER |
TO_NUMBER |
|
TO_CHAR |
TO_CHAR oder gleichwertiger Ausdruck |
Prüfen Sie TO_CHAR. |
TO_DATE |
TO_DATE |
|
TO_DATE(input, ‚YYYYDDD‘) |
JULIAN_TO_DATE_UDF |
DateTime und Intervallfunktionen¶
Teradata |
Snowflake |
Hinweis |
|---|---|---|
ADD_MONTHS |
ADD_MONTHS |
|
EXTRACT |
EXTRACT |
|
LAST_DAY |
LAST_DAY |
|
MONTH |
MONTH |
|
MONTHS_BETWEEN |
MONTHS_BETWEEN_UDF |
|
NEXT_DAY |
NEXT_DAY |
|
OADD_MONTHS |
ADD_MONTHS |
|
ROUND(Numerisch) |
ROUND |
|
ROUND(date) |
ROUND_DATE_UDF |
|
TRUNC(date) |
TRUNC_UDF |
|
YEAR |
YEAR |
Hash-Funktionen¶
Teradata |
Snowflake |
Hinweis |
|---|---|---|
HASH_MD5 |
MD5 |
|
HASHAMP HASHBACKAM HASHBUCKET HASHROW |
Nicht unterstützt |
Prüfen Sie die Hinweise zu den Architekturunterschieden zwischen Teradata und Snowflake |
Siehe Hashwert-Funktionen
JSON-Funktionen¶
Teradata |
Snowflake |
Hinweis |
|---|---|---|
NEW JSON |
TO_JSON(PARSE_JSON() ) |
Prüfen Sie NEW JSON |
JSON_CHECK |
CHECK_JSON |
Prüfen Sie JSON_CHECK |
JSON_TABLE |
Äquivalente Abfrage |
Prüfen Sie JSON_TABLE |
JSONExtract JSONExtractValue |
JSON_EXTRACT_UDF |
Prüfen Sie JSON_EXTRACT |
Siehe JSON Dokumentation
Null-Handling-Funktionen¶
Teradata |
Snowflake |
Hinweis |
|---|---|---|
NVL |
NVL |
|
NVL2 |
NVL2 |
Siehe Null-Handling-Funktionen
Geordnete Analytische/Fenster Aggregat-Funktionen¶
Teradata |
Snowflake |
Hinweis |
|---|---|---|
CSUM(col1, col2) |
SUM(col_1) OVER (PARTITION BY null ORDER BY col_2 ROWS UNBOUNDED PRECEDING) |
|
CUME_DIST |
CUME_DIST |
|
DENSE_RANK |
DENSE_RANK |
|
FIRST_VALUE |
FIRST_VALUE |
|
LAG |
LAG |
|
LAST_VALUE |
LAST_VALUE |
|
LEAD |
LEAD |
|
MAVG(csales, 2, cdate, csales) |
AVG(csales) OVER (ORDER BY cdate, csales ROWS 1 PRECEDING) |
|
MEDIAN |
MEDIAN |
|
MSUM(csales, 2, cdate, csales) |
SUM(csales) OVER(ORDER BY cdate, csales ROWS 1 PRECEDING) |
|
PERCENT_RANK |
PERCENT_RANK |
|
PERCENTILE_CONT |
PERCENTILE_CONT |
|
PERCENTILE_DISC |
PERCENTILE_DISC |
|
QUANTILE |
QUANTILE |
|
RANK |
RANK |
|
ROW_NUMBER |
ROW_NUMBER |
Siehe Fensterfunktionen
Periodenfunktionen und Operatoren¶
Teradata |
Snowflake |
Hinweis |
|---|---|---|
BEGIN |
PERIOD_BEGIN_UDF |
|
END |
PERIOD_END_UDF |
|
INTERVAL |
TIMESTAMPDIFF |
|
LAST |
PERIOD_LAST_UDF |
|
LDIFF |
PERIOD_LDIFF_UDF |
|
OVERLAPS |
PUBLIC.PERIOD_OVERLAPS_UDF |
|
PERIOD |
PERIOD_UDF |
|
PERIOD(datetimeValue, UNTIL_CHANGED) |
PERIOD_UDF(datetimeValue, ‚9999-12-31 23:59:59,999999‘) |
Siehe Hinweise zu Endkonstante Konstanten |
RDIFF |
PERIOD_RDIFF_UDF |
Abfrageband-Funktionen¶
Teradata |
Snowflake |
Hinweis |
|---|---|---|
GETQUERYBANDVALUE |
GETQUERYBANDVALUE_UDF |
Prüfen Sie GETQUERYBANDVALUE |
Siehe Abfrageband-Funktionen
Regex-Funktionen¶
Teradata |
Snowflake |
Hinweis |
|---|---|---|
REGEXP_INSTR |
REGEXP_INSTR |
Prüfen Sie Regex-Funktionen |
REGEXP_REPLACE |
REGEXP_REPLACE |
Prüfen Sie Regex-Funktionen |
REGEXP_SIMILAR |
REGEXP_LIKE |
Prüfen Sie Regex-Funktionen |
REGEXP_SUBSTR |
REGEXP_SUBSTR |
Prüfen Sie Regex-Funktionen |
Siehe Regex-Funktionen
Zeichenfolge-Operatoren und -Funktionen¶
Teradata |
Snowflake |
Hinweis |
|---|---|---|
ASCII |
ASCII |
|
CHAR2HEXINT |
CHAR2HEXINT_UDF |
|
CHR |
CHR/CHAR |
|
CHAR_LENGTH |
LEN |
|
CONCAT |
CONCAT |
|
EDITDISTANCE |
EDITDISTANCE |
|
INDEX |
CHARINDEX |
Überprüfen Sie die Hinweise zu implicit-conversion |
INITCAP |
INITCAP |
|
INSTR |
REGEXP_INSTR |
|
INSTR(StringValue, StringValue,NumericNegativeValue, NumericValue) |
INSTR_UDF(StringValue, StringValue,NumericNegativeValue, NumericValue) |
|
LEFT |
LEFT |
|
LENGTH |
LENGTH |
|
LOWER |
LOWER |
|
LPAD |
LPAD |
|
LTRIM |
LTRIM |
|
OREPLACE |
REPLACE |
|
OTRANSLATE |
TRANSLATE |
|
POSITION |
POSITION |
Überprüfen Sie die Hinweise zu implicit-conversion |
REVERSE |
REVERSE |
|
RIGHT |
RIGHT |
|
RPAD |
RPAD |
|
RTRIM |
RTRIM |
|
SOUNDEX |
SOUNDEX_P123 |
|
STRTOK |
STRTOK |
|
STRTOK_SPLIT_TO_TABLE |
STRTOK_SPLIT_TO_TABLE |
Prüfen Sie Strtok_split_to_table |
SUBSTRING |
SUBSTR/SUBSTR_UDF |
Prüfen Sie Teilzeichenfolge |
TRANSLATE_CHK |
TRANSLATE_CHK_UDF |
|
TRIM(LEADING ‚0‘ FROMaTABLE) |
LTRIM(aTABLE, ‚0‘) |
|
TRIM(TRAILING ‚0‘ FROMaTABLE) |
RTRIM(aTABLE, ‚0‘) |
|
TRIM(BOTH ‚0‘ FROMaTABLE) |
TRIM(aTABLE, ‚0‘) |
|
TRIM(CAST(numericValue AS FORMAT ‚999‘)) |
LPAD(numericValue, 3, 0) |
|
UPPER |
UPPER |
St_Point-Funktionen¶
Teradata |
Snowflake |
Hinweis |
|---|---|---|
ST_SPHERICALDISTANCE |
HAVERSINE |
Siehe St_Point-Funktionen
Tabellen-Operatoren¶
Teradata |
Snowflake |
Hinweis |
|---|---|---|
TD_UNPIVOT |
Äquivalente Abfrage |
Prüfen Sie Td_unpivot |
Siehe Tabellen-Operatoren
XML-Funktionen¶
Teradata |
Snowflake |
Hinweis |
|---|---|---|
XMLAGG |
LISTAGG |
Prüfen Sie Xmlagg |
XMLQUERY |
Nicht unterstützt |
Siehe XML-Funktionen
Erweiterbarkeits-UDFs¶
Dieser Abschnitt enthält UDFs und andere Erweiterbarkeitsfunktionen, die von Teradata nicht als in das System integrierte Funktionen angeboten werden, aber von SnowConvert AI transformiert werden.
Teradata |
Snowflake |
Hinweis |
|---|---|---|
CHKNUM |
CHKNUM_UDF |
Besuchen Sie diese UDF-Download-Seite |
Anmerkungen¶
Architekturunterschiede zwischen Teradata und Snowflake¶
Teradata verfügt über eine Shared-Nothing-Architektur mit Access Module Processors (AMP), bei der jeder AMP seinen eigenen Anteil am Plattenspeicher verwaltet und bei Abfragen über Hashing zugegriffen wird. Um die Vorteile der Parallelität zu nutzen, sollten die gespeicherten Informationen gleichmäßig auf AMPs verteilt werden. Zu diesem Zweck bietet Teradata eine Gruppe von Hashwert-Funktionen an, mit denen Sie feststellen können, wie gut die aktuellen Primärindizes sind.
Die Snowflake-Architektur hingegen ist anders. Sie verwaltet die Speicherung der Daten selbst, so dass sich die Benutzer nicht um die Optimierung der Datenverteilung kümmern müssen.
Endkonstanten (UNTIL_CHANGED und UNTIL_CLOSED)¶
Sowohl UNTIL_CHANGED als auch UNTIL_CLOSED sind Teradata-Konstanten, die eine undefinierte Endgrenze für Perioden darstellen. Intern werden diese Konstanten als der maximale Wert dargestellt, den ein Zeitstempel haben kann, z. B. ‚9999-12-31 23:59:59,999999‘. Während der Migration der Funktion PERIOD wird die Endgrenze überprüft, um festzustellen, ob sie eine dieser Konstanten ist, und sie gegebenenfalls durch Varchar mit dem Wert ‚9999-12-31 23:59:59.999999‘ zu ersetzen. Ist dies der Fall, wandelt Snowflake den Varchar-Wert je nach Typ der Anfangsgrenze beim Aufruf von PERIOD___UDF aufruft.
Implizite Konvertierung¶
Einige Teradata-Zeichenfolgenfunktionen wie INDEX oder POSITION akzeptieren Nicht-Zeichenfolgen-Datentypen und konvertieren sie implizit in eine Zeichenfolge. Dies kann zu Inkonsistenzen in den Ergebnissen dieser Funktionen zwischen Teradata und Snowflake führen. Zum Beispiel der folgende Teradata-Code:
Das Ergebnis ist 4, während die CHARINDEX-Entsprechung in Snowflake:
2 ist. Dies geschieht, weil Teradata seine eigenen Standardformate hat, die bei der impliziten Konvertierung verwendet werden. Im obigen Beispiel interpretiert Teradata die numerische Konstante 35 als BYTEINT und verwendet BYTEINT Standardformat'-999' für die implizite Konvertierung in eine Zeichenfolge, wodurch der konvertierte Wert ' 35' lautet. Andererseits verwendet Snowflake seine eigenen Standardformate, was zu Inkonsistenzen im Ergebnis führt.
Um dieses Problem zu lösen, werden die folgenden Änderungen an diesen Funktionsparametern vorgenommen:
If the parameter does not have a cast with format, then a Snowflake
TO_VARCHARfunction with the default Teradata format equivalent in Snowflake is added instead.Wenn der Parameter eine Formatumwandlung hat, dann wird das Format in sein Snowflake-Äquivalent konvertiert und die Funktion
TO_VARCHARhinzugefügt.Als Randbemerkung: Teradata ignoriert das Vorzeichen einer Zahl, wenn es nicht explizit in ein Format eingefügt wird, während Snowflake immer Leerzeichen hinzufügt, um das Vorzeichen einzufügen, auch wenn es nicht angegeben wurde. In diesen Fällen wird geprüft, ob das Vorzeichen angegeben wurde und es aus der Snowflake-Zeichenfolge entfernt, falls es nicht angegeben wurde.
Nach diesen Änderungen würde der Code folgendermaßen aussehen:
Das Ergebnis ist 4, das gleiche wie der Teradata-Code.
Bekannte Probleme ¶
Es wurden keine Probleme gefunden.
COALESCE¶
Beschreibung¶
Die Coalesce-Funktion wird verwendet, um das erste Nicht-Null-Element in einer Liste zurückzugeben. Weitere Informationen dazu finden Sie unter COALESCE.
Sowohl die COALESCE-Funktionen von Teradata als auch von Snowflake erlauben die Kombination von numerischen Parametern mit Zeichenfolgen- und Datumsparametern mit Zeitstempeln. Sie behandeln diese beiden Fälle jedoch unterschiedlich:
Numerische Parameter zusammen mit Zeichenfolgen-Parametern: Teradata konvertiert alle numerischen Parameter in Varchar, während Snowflake das Gegenteil tut
Zeitstempel zusammen mit Datumsparametern: Teradata konvertiert alle Zeitstempel in ein Datum, während Snowflake das Gegenteil tut
Um die Funktionsäquivalenz im ersten Fall zu gewährleisten, werden alle numerischen Parameter mit der Funktionto_varcharinstringumgewandelt, wodurch das Format der Zahlen berücksichtigt wird. Im zweiten Fall werden alle Zeitstempel mit to_date in ein Datum umgewandelt. Teradata ignoriert das Format der Zeitstempel bei der Transformation, so dass es bei der Transformation entfernt wird.
Beispielhafte Quellcode-Muster¶
Numerisch gemischt mit Zeichenfolge-Parametern¶
Teradata¶
Abfrage
Ergebnis
Snowflake¶
Abfrage
Ergebnis
Zeitstempel gemischt mit Datumsparametern¶
Teradata¶
Abfrage
SELECT COALESCE(cast(TIMESTAMP '2021-09-14 10:14:59' as format 'HH:MI:SSBDD-MM-YYYY'), current_date);
Ergebnis
Snowflake¶
Abfrage
Ergebnis
Bekannte Probleme¶
Keine bekannten Probleme_.\_
Zugehörige EWIs¶
SSC-EWI-TD0025: Ausgabeformat nicht unterstützt.
CURRENT_TIMESTAMP¶
Schweregrad¶
Niedrig
Beschreibung¶
Bruchteile von Sekunden werden nur angezeigt, wenn dies explizit im Sitzungsparameter TIME_OUTPUT_FORMAT festgelegt ist.
Eingabecode:¶
Ausgabecode:¶
Empfehlungen¶
Prüfen Sie, ob der Sitzungsparameter TIME_OUTPUT___FORMAT so eingestellt ist, dass Sie die gewünschte Verhaltensweise erhalten.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
Bekannte Probleme ¶
Es wurden keine Probleme gefunden.
Zugehörige EWIs ¶
Keine zugehörigen EWIs.
DAYNUMBER_OF_MONTH¶
Beschreibung¶
Gibt die Anzahl der Tage zurück, die vom Monatsanfang bis zum angegebenen Datum verstrichen sind. Weitere Informationen finden Sie unter DAYNUMBER_OF_MONTH.
Sowohl Teradata als auch Snowflake behandeln die Funktion DAYNUMBER_OF_MONTH auf die gleiche Weise, mit einer Ausnahme:
Der ISO-Kalender: Ein ISO Monat hat 4 oder 5 vollständige Wochen. Weitere Informationen finden Sie unter Über ISO-Berechnung.
Um die funktionale Gleichwertigkeit zu gewährleisten, wird eine benutzerdefinierte Funktion (UDF) für den ISO-Kalenderfall hinzugefügt.
Beispielhafte Quellcode-Muster¶
Teradata¶
Abfrage
Ergebnis
Snowflake¶
Abfrage
Ergebnis
ISO-Kalender¶
Teradata¶
Abfrage
Ergebnis
Snowflake¶
Abfrage
Ergebnis
Bekannte Probleme ¶
Es wurden keine Probleme gefunden.
Zugehörige EWIs ¶
Keine zugehörigen EWIs.
FROM_BYTES¶
Übersetzungsspezifikation für die Transformation der TO_CHAR-Funktion in eine entsprechende Funktionsverkettung in Snowflake
Beschreibung¶
Die Funktion FROM_BYTES kodiert eine Folge von Bits in eine Folge von Zeichen, die ihre Kodierung darstellen. Weitere Informationen finden Sie unter FROM_BYTES(Encoding).
Snowflake bietet keine Unterstützung für die Funktion FROM_BYTES. Für die häufigsten Fälle, in denen diese Funktion verwendet wird, gibt es Umgehungsmöglichkeiten.
Beispielhafte Quellcode-Muster¶
Teradata¶
Abfrage¶
Ergebnis¶
Snowflake¶
Abfrage¶
Ergebnis¶
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Bekannte Probleme¶
TO_NUMBER-Formatparameter muss mit den Ziffern der Eingabezeichenfolge übereinstimmen.
Es gibt keine funktional äquivalente integrierte Funktion für FROM_BYTES bei der Kodierung nach ANSI
Zugehörige EWIs¶
SSC-EWI-0031: FUNCTION NOT SUPPORTED
GETQUERYBANDVALUE¶
Übersetzungsspezifikation für die Transformation von GetQueryBandValue in Snowflake
Beschreibung¶
Die Funktion GetQueryBandValue sucht einen Namensschlüssel innerhalb des Abfragebands und gibt den zugehörigen Wert zurück, falls vorhanden. Sie können damit innerhalb der Transaktion, der Sitzung, des Profils oder eines der Schlüsselwert-Paare des Abfragebands suchen.
Weitere Informationen zu dieser Funktion finden Sie unter GetQueryBandValue in der Teradata-Dokumentation.
Beispielhafte Quellcode-Muster¶
Datenkonfiguration¶
Teradata¶
Abfrage¶
Snowflake¶
Abfrage¶
GetQueryBandValue mit dem QueryBandIn-Parameter¶
Teradata¶
Abfrage¶
Ergebnis¶
Snowflake¶
Abfrage¶
Ergebnis¶
GetQueryBandValue ohne QueryBandIn-Parameter¶
Teradata¶
Abfrage¶
Ergebnis¶
Snowflake¶
Abfrage¶
Ergebnis¶
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Bekannte Probleme¶
1. GetQueryBandValue ohne QueryBandIn-Parameter nur für Sitzung unterstützt
Teradata ermöglicht die Definition von Abfragebändern auf Transaktions-, Sitzungs- oder Profilebene. Wenn GetQueryBandValue ohne Angabe eines Abfragebands aufgerufen wird, prüft Teradata automatisch die Transaktions-, Sitzungs- oder Profil-Abfragebands, je nach dem Wert des Parameters SearchType.
In Snowflake sind die Abfrage-Tags, die für Sitzung, Benutzer und Konten angegeben werden können, das engste Äquivalent zu Abfragebands.
Aufgrund dieser Unterschiede berücksichtigt die Implementierung von GetQueryBandValue ohne den Parameter QueryBandIn nur das Abfrage-Tag der Sitzung und funktioniert bei anderen Sucharten möglicherweise nicht wie erwartet.
Zugehörige EWIs¶
Keine zugehörigen EWIs.
JSON_CHECK¶
Beschreibung¶
Die Funktion JSON_CHECK überprüft eine Zeichenfolge auf eine gültige JSON.
For more information, see the Teradata JSON_CHECK documentation.
Beispielhaftes Quellcode-Muster¶
Grundlegendes Quellcode-Muster¶
Teradata¶
Abfrage
Snowflake Scripting¶
Abfrage
JSON_CHECK innerhalb CASE-Transformation¶
Teradata¶
Abfrage
Snowflake Scripting¶
Abfrage
Bekannte Probleme ¶
Es wurden keine Probleme gefunden.
Zugehörige EWIs ¶
Keine zugehörigen EWIs.
JSON_EXTRACT¶
Übersetzungsreferenz zur Konvertierung der Teradata-Funktionen JSONExtractValue, JSONExtractLargeValue und JSONExtract in Snowflake Scripting.
Beschreibung¶
Wie in der Dokumentation von Teradata beschrieben, verwenden diese Funktionen die JSONPath Abfrage-Syntax, um Informationen über einen Teil einer JSON-Instanz abzufragen. Die gewünschte Entität kann ein beliebiger Teil einer JSON-Instanz sein, wie z. B. ein Name/Wert-Paar, ein Objekt, ein Array, ein Arrayelement oder ein Wert.
For more information, see the Teradata JSONExtract function comparison.
Die JSON_EXTRACT_UDF ist eine Snowflake-Implementierung der JSONPath-Spezifikation, die eine modifizierte Version der ursprünglichen JavaScript-Implementierung von Stefan Goessner verwendet.
Beispielhaftes Quellcode-Muster¶
Teradata¶
Abfrage¶
Snowflake Scripting¶
Abfrage¶
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Bekannte Probleme¶
1. Elements inside JSONs may not retain their original order.¶
Elemente innerhalb einer JSON werden beim Einfügen in eine Tabelle nach ihren Schlüsseln geordnet. Daher können die Abfrageergebnisse abweichen. Dies hat jedoch keinen Einfluss auf die Reihenfolge der Arrays innerhalb der JSON.
Wenn zum Beispiel das Original JSON lautet:
Verwendung der Snowflake PARSE_JSON(), die eine Eingabezeichenfolge als JSON-Dokument interpretiert und einen VARIANT-Wert erzeugt. Die eingefügte JSON wird sein:
Beachten Sie, dass „Alter“ jetzt das erste Element ist. Der Array der „Städte“ behält jedoch seine ursprüngliche Reihenfolge bei.
Zugehörige EWIs¶
Keine zugehörigen EWIs.
JSON_TABLE¶
Übersetzungsspezifikation für die Transformation von JSON_TABLE in eine entsprechende Abfrage in Snowflake
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Beschreibung¶
Erzeugt eine Tabelle auf der Grundlage des Inhalts eines JSON-Dokuments. Siehe JSON_TABLE Dokumentation.
Die Umrechnung von JSON_TABLE hat die unten dargestellten Überlegungen:
ROW_NUMBER() ist ein Äquivalent für Ordnungszahlspalten in Snowflake.
In Teradata muss die zweite Spalte von JSON_TABLE vom Typ JSON sein, da die generierten Spalten die zweite Spalte ersetzen. Aus diesem Grund geht SnowConvert AI davon aus, dass die Spalte den richtigen Typ hat, und verwendet ihn für die Transformation.
Beispielhafte Quellcode-Muster¶
Datenkonfiguration¶
Teradata¶
Abfrage¶
Snowflake¶
Abfrage¶
Mustercode 1¶
Teradata¶
Abfrage¶
Ergebnis¶
Snowflake¶
Abfrage¶
Ergebnis¶
Bekannte Probleme¶
1. Der Pfad JSON in COLEXPR darf keine mehreren Sternchenzugriffe haben
Die JSON-Pfad in den Spalten darf keine mehrere Listen mit Sternchenzugriff haben, zum Beispiel: $.Names[*].FullNames[*]. Der JSON-Pfad von ROWEXP kann dies hingegen enthalten.
2. Die JSON-Struktur, die in dem COLEXPR-Literal definiert ist, muss eine gültige JSON-Struktur sein
Wenn dies nicht der Fall ist, wird der Benutzer gewarnt, dass die JSON-Struktur fehlerhaft ist.
Zugehörige EWIs¶
Keine zugehörigen EWIs.
NEW JSON¶
Beschreibung¶
Weist eine neue Instanz eines JSON-Datentyps zu. Weitere Informationen finden Sie unter NEW JSON-Konstruktor-Ausdruck Expression.
Der zweite Parameter der Funktion NEW JSON wird von SnowConvert AI immer weggelassen, da Snowflake nur mit UTF-8 arbeitet.
Beispielhafte Quellcode-Muster¶
NEW JSON mit Zeichenfolgen-Daten¶
Teradata¶
Abfrage
Ergebnis
COLUMN1 |
COLUMN2 |
|---|---|
{„age“:24,“name“:“cameron“} |
{„age“:24,“name“:“cameron“} |
Snowflake¶
Abfrage
Ergebnis
COLUMN1 |
COLUMN2 |
|---|---|
{„age“:24,“name“:“cameron“} |
{„age“:24,“name“:“cameron“} |
Bekannte Probleme¶
1. Der zweite Parameter wird nicht unterstützt
Der zweite Parameter der Funktion, mit dem das Format der resultierenden JSON angegeben wird, wird nicht unterstützt, da Snowflake nur UTF-8 unterstützt, was bei einigen Verwendungen der Funktion zu Funktionsunterschieden führen kann.
2. JSON mit BINARY-Daten wird nicht unterstützt
Snowflake unterstützt nicht das Parsen von Binärdaten zur Erstellung eines JSON-Werts. Benutzende werden gewarnt, wenn SnowConvert AI einen NEW JSON-Wert im Zusammenhang mit Binärdaten findet.
Zugehörige EWIs¶
SSC-EWI-TD0039: Eingabeformat nicht unterstützt.
NVP¶
Beschreibung¶
Extrahiert den Wert des Schlüsselwert-Paares, bei dem der Schlüssel mit dem n-ten Vorkommen des angegebenen Suchnamens übereinstimmt. Siehe NVP.
Beispielhafte Quellcode-Muster¶
NVP-Grundfall¶
Teradata¶
Abfrage
Ergebnis
Snowflake¶
Abfrage
Ergebnis
NVP wobei optionale Parameter ignoriert werden¶
Teradata¶
Abfrage
Ergebnis
Snowflake¶
Abfrage
Ergebnis
NVP mit Leerzeichen als Trennzeichen¶
Teradata¶
Abfrage
Ergebnis
Snowflake¶
Abfrage
Ergebnis
NVP mit nicht-literalen Trennzeichen¶
Teradata¶
Abfrage
Snowflake¶
Abfrage
Bekannte Probleme¶
1. Delimiters with spaces (\ ) need to have the backslash escaped in Snowflake
In Teradata, delimiters including space specify them using „\ „ (see NVP with spaces in delimiters), as shown in the examples, in Teradata it is not necessary to escape the backslash, however, it is necessary in Snowflake. Escaping the backslashes in the delimiter can be done automatically by SnowConvert AI but only if the delimiter values are literal strings, otherwise the user will be warned that the backslashes could not be escaped and that it may cause different results in Snowflake.
Zugehörige EWIs¶
SSC-FDM-TD0008: Non-literal delimiters with spaces need their backslash escaped in Snowflake.
OVERLAPS¶
Beschreibung¶
Laut der Dokumentation von Teradata vergleicht der Operator OVERLAPS zwei oder mehr Zeitraumausdrücke. Wenn sie sich überschneiden, gibt er „true“ zurück.
For more information, see the Teradata OVERLAPS documentation.
Die PERIOD_OVERLAPS_UDF ist eine Snowflake-Implementierung des OVERLAPS-Operators in Teradata.
Beispielhaftes Quellcode-Muster¶
Teradata¶
Abfrage
Snowflake Scripting¶
Abfrage
Bekannte Probleme¶
1. Unsupported Period Expressions¶
Die Ausdrücke PERIOD(TIME WITH TIME ZONE) und PERIOD(TIMESTAMP WITH TIME ZONE) werden noch nicht unterstützt.
Zugehörige EWIs¶
SSC-EWI-TD0053: Snowflake unterstützt nicht den Zeittyp, da alle Zeiträume stattdessen als varchar behandelt werden.
P_INTERSECT¶
Beschreibung¶
Laut der Dokumentation von Teradata vergleicht der Operator P_INTERSECT zwei oder mehr Zeitraumausdrücke. Wenn sie sich überschneiden, wird der gemeinsame Teil der Zeitraumausdrücke zurückgegeben.
For more information, see the Teradata P_INTERSECT documentation.
Die PERIOD_INTERSECT_UDF ist eine Snowflake-Implementierung des Operators P_INTERSECT in Teradata.
Beispielhaftes Quellcode-Muster¶
Teradata¶
Abfrage
Snowflake Scripting¶
Abfrage
Bekannte Probleme¶
1. Unsupported Period Expressions¶
Die Ausdrücke PERIOD(TIME WITH TIME ZONE) und PERIOD(TIMESTAMP WITH TIME ZONE) werden noch nicht unterstützt.
Zugehörige EWIs¶
SSC-EWI-TD0053: Snowflake unterstützt nicht den Zeittyp, da alle Zeiträume stattdessen als varchar behandelt werden.
PIVOT¶
Translation specification for the PIVOT function from Teradata to Snowflake
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Beschreibung¶
Die Pivot-Funktion wird verwendet, um Zeilen einer Tabelle in Spalten umzuwandeln. Weitere Informationen finden Sie in der PIVOT Teradata-Dokumentation.
Beispielhafte Quellcode-Muster¶
Datenkonfiguration¶
Teradata¶
Abfrage¶
Snowflake¶
Abfrage¶
Grundlegende PIVOT-Transformation¶
Teradata¶
Abfrage¶
Ergebnis¶
Snowflake¶
Abfrage¶
Ergebnis¶
PIVOT mit Transformation von Aliasen¶
Teradata¶
Abfrage¶
Ergebnis¶
Snowflake¶
Abfrage¶
Ergebnis¶
Bekannte Probleme¶
1. WITH-Klausel nicht unterstützt
Die Verwendung der WITH-Klausel wird derzeit nicht unterstützt.
2. Pivot über mehrere Pivot-Spalten nicht unterstützt
SnowConvert AI transformiert die PIVOT-Funktion in die PIVOT-Funktion in Snowflake, die nur die Anwendung der Funktion auf eine einzelne Spalte unterstützt.
3. Pivot mit mehreren Aggregatfunktionen nicht unterstützt
Die Funktion PIVOT in Snowflake unterstützt nur die Anwendung einer Aggregatfunktion auf die Daten.
4. Unterabfrage in der IN-Klausel nicht unterstützt
Die IN-Klausel der Snowflake PIVOT-Funktion akzeptiert keine Unterabfragen.
5. Aliase werden nur unterstützt, wenn alle IN-Klausel-Elemente sie haben und eine Tabellenspezifikation vorhanden ist
Damit die Spaltennamen mit Aliasnamen gleichwertig sind, muss Folgendes berücksichtigt werden: SnowConvert AI setzt voraus, dass für alle in der IN-Klausel angegebenen Werte ein Alias angegeben und die Tabellenspezifikation im Eingabecode vorhanden ist. Dies ist notwendig, damit SnowConvert AI die Alias-Liste für die resultierende Tabelle erfolgreich erstellen kann.
Zugehörige EWIs¶
SSC-EWI-0015: The input pivot/unpivot statement format is not supported
RANK¶
Übersetzungsspezifikation für die Transformation der RANK()-Funktion
Beschreibung¶
RANK sortiert ein Resultset und identifiziert den numerischen Rang jeder Zeile im Ergebnis. Das einzige Argument für RANK ist die Sortierspalte bzw. die Sortierspalten, und die Funktion gibt eine ganze Zahl zurück, die den Rang jeder Zeile im Ergebnis darstellt. (RANK in Teradata)
Teradata-Syntax¶
Snowflake-Syntax¶
Beispielhaftes Quellcode-Muster¶
Datenkonfiguration¶
Teradata¶
Abfrage¶
Snowflake¶
Abfrage¶
RANK() mit der Reihenfolge ASC, DESC und DEFAULT¶
Teradata¶
Warnung
Beachten Sie, dass der Standardwert von Teradata für die Bestellung beim Aufruf von RANK() DESC ist. Die Standardeinstellung in Snowflake ist jedoch ASC. So wird DESC bei der Umwandlung von RANK() hinzugefügt, wenn keine Reihenfolge angegeben ist.
Abfrage¶
Ergebnis¶
| SALES | SALESASC | SALESDESC | SALESDEFAULT |
|---|---|---|---|
| NULL | 6 | 6 | 6 |
| 200 | 5 | 1 | 1 |
| 150 | 3 | 2 | 2 |
| 150 | 3 | 2 | 2 |
| 120 | 2 | 4 | 4 |
| 100 | 1 | 5 | 5 |
Snowflake¶
Abfrage¶
Ergebnis¶
| SALES | SALESASC | SALESDESC | SALESDEFAULT |
|---|---|---|---|
| NULL | 6 | 6 | 6 |
| 200 | 5 | 1 | 1 |
| 150 | 3 | 2 | 2 |
| 150 | 3 | 2 | 2 |
| 120 | 2 | 4 | 4 |
| 100 | 1 | 5 | 5 |
Bekannte Probleme ¶
Es wurden keine Probleme gefunden.
Zugehörige EWIs ¶
Keine zugehörigen EWIs.
Regex-Funktionen¶
Beschreibung¶
Sowohl Teradata als auch Snowflake bieten Unterstützung für Funktionen, die reguläre Ausdrücke auf Varchar-Eingaben anwenden. Weitere Einzelheiten finden Sie in der Teradata-Dokumentation und der Snowflake-Dokumentation.
Beispielhafte Quellcode-Muster¶
Datenkonfiguration¶
Teradata¶
Abfrage
Snowflake¶
Abfrage
Beispiel einer Regex-Transformation¶
Teradata¶
Abfrage
Ergebnis
Snowflake¶
Abfrage
Ergebnis
Bekannte Probleme¶
1. Snowflake unterstützt nur POSIX-reguläre Ausdrücke
Benutzende werden gewarnt, wenn SnowConvert AI einen regulären Nicht-POSIX-Ausdruck findet.
2. Die Teradata-Option „match_arg“ ‚l‘ wird in Snowflake nicht unterstützt
Die Option „l“ hat kein Entsprechung in Snowflake und Benutzende werden gewarnt, wenn SnowConvert AI sie findet.
3. Feste Größe des Datentyps CHAR kann zu einer unterschiedlichen Verhaltensweisen führen
Einige Regex-Funktionen in Teradata versuchen, die gesamte Spalte des Datentyps CHAR in einer Tabelle abzugleichen, auch wenn einige der Zeichen in der Spalte leer geblieben sind, weil eine kleinere Zeichenfolge eingefügt wurde. In Snowflake ist dies nicht der Fall, da der Datentyp CHAR eine variable Größe hat.
4. REGEXP_SPLIT\_TO\_TABLE nicht unterstützt
Diese Funktion wird derzeit nicht von Snowflake unterstützt.
Zugehörige EWIs¶
SSC-FDM-0007: Element mit fehlenden Abhängigkeiten.
SSC-FDM-TD0016: Der Wert „l“ für den Parameter „match_arg“ wird in Snowflake nicht unterstützt.
STRTOK_SPLIT_TO_TABLE¶
Beschreibung¶
Zerlegt eine Zeichenfolge in eine Tabelle unter Verwendung der angegebenen Trennzeichen. Weitere Informationen finden Sie unter STRTOK_SPLIT_TO_TABLE.
Beispielhafte Quellcode-Muster¶
Datenkonfiguration¶
Teradata¶
Abfrage
Snowflake¶
Abfrage
STRTOK_SPLIT_TO_TABLE-Transformation¶
Teradata¶
Abfrage
Ergebnis
Snowflake¶
Abfrage
Ergebnis
Bekannte Probleme¶
Keine bekannten Probleme.
Zugehörige EWIs ¶
Keine zugehörigen EWIs.
SUBSTRING¶
Beschreibung¶
Extrahiert eine Teilzeichenfolge aus einer gegebenen Eingabezeichenfolge. Weitere Informationen finden Sie unter SUBSTRING/SUBSTR.
Wenn der Wert, mit dem die Teilzeichenkette (n1) beginnen soll, kleiner als eins ist, wird stattdessen SUBSTR_UDF eingefügt.
Beispielhafte Quellcode-Muster¶
SUBSTRING-Transformation¶
Teradata¶
Abfrage
Ergebnis
Snowflake¶
Abfrage
Ergebnis
Zugehörige EWIs¶
Keine zugehörigen EWIs.
TD_UNPIVOT¶
Übersetzungsspezifikation für die Transformation von TD_UNPIVOT in eine entsprechende Abfrage in Snowflake
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Beschreibung¶
TD_UNPIVOT in Teradata kann mehrere Spalten auf einmal entpivotieren, während UNPIVOT in Snowflake nur eine einzelne Spalte entpivotieren kann**.** Die Funktion unpivot wird verwendet, um Spalten der angegebenen Tabelle in Zeilen umzuwandeln. Weitere Informationen finden Sie unter TD_UNPIVOT.
Die folgende Transformation ist in der Lage, eine SQL Abfrage in Snowflake zu generieren, die mehrere Spalten gleichzeitig entpivotiert, so wie es auch in Teradata funktioniert.
Beispielhafte Quellcode-Muster¶
Titel Datenkonfiguration¶
Teradata¶
Abfrage¶
Snowflake¶
Abfrage¶
TD_UNPIVOT-Transformation¶
Teradata¶
Abfrage¶
Ergebnis¶
Snowflake¶
Abfrage¶
Ergebnis¶
Bekannte Probleme¶
TD_UNPIVOT mit INCLUDE_NULLS-Klausel auf YES gesetzt wird nicht unterstützt
Die Snowflake UNPIVOT-Funktion, die in der Transformation verwendet wird, ignoriert immer Nullwerte, und der Benutzer wird gewarnt, dass die INCLUDE_NULLS-Klausel nicht unterstützt wird, wenn sie auf YES gesetzt ist.
Die Tabelleninformationen werden benötigt, um die Funktion korrekt zu transformieren
SnowConvert AI benötigt die Namen der Spalten, die in der TD_UNPIVOTFunktion verwendet werden; wenn Benutzende die Spaltenliste nicht in den Abfrageausdruck der Funktion aufnehmen, aber den Namen der Tabelle angeben, die nicht pivotiert wurde, wird versucht, die Spaltennamen aus der Tabellendefinition abzurufen. Wenn die Namen nicht gefunden werden können, werden Benutzende gewarnt, dass die resultierende Abfrage möglicherweise Spalten im Ergebnis verliert.
Zugehörige EWIs¶
SSC-EWI-TD0061: Die TD_UNPIVOT-Transformation erfordert Spalteninformationen, die nicht gefunden werden konnten; Spalten fehlen im Ergebnis.
TO_CHAR¶
Beschreibung¶
Die Funktion TO_CHAR wandelt einen DateTime- oder numerischen Wert in eine Zeichenfolge um. Weitere Informationen finden Sie unter TO_CHAR(Numeric) und TO_CHAR(DateTime).
Sowohl Snowflake als auch Teradata haben ihre eigene Version der TO_CHAR-Funktion, Teradata unterstützt jedoch viele Formate, die von Snowflake nicht nativ unterstützt werden. Zur Unterstützung dieser Formatelemente verwendet SnowConvert AI in Snowflake integrierte Funktionen und benutzerdefinierte UDFs, um einen Verkettungsausdruck zu generieren, der dieselbe Zeichenfolge wie die ursprüngliche TO_CHAR-Funktion in Teradata erzeugt.
Beispielhafte Quellcode-Muster¶
TO_CHAR(DateTime)-Transformation¶
Teradata¶
Abfrage
Ergebnis
Snowflake¶
Abfrage
Ergebnis
TO_CHAR(Numeric)-Transformation¶
Teradata¶
Abfrage
Ergebnis
Snowflake¶
Abfrage
Ergebnis
Bekannte Probleme¶
1. Formate mit unterschiedlichen oder nicht unterstützten Verhaltensweisen
Teradata bietet eine umfangreiche Liste von Formatelementen, die nach der Transformation der TO_CHAR-Funktion ein anderes Verhalten in Snowflake zeigen können. Die Liste der Elemente mit unterschiedlichen oder nicht unterstützten Verhaltensweisen finden Sie unter SSC-EWI-TD0029.
Zugehörige EWIs¶
SSC-FDM-TD0029: Von Snowflake unterstützte Formate für TO_CHAR unterscheiden sich von Teradata und können fehlschlagen oder ein anderes Verhalten aufweisen.
XMLAGG¶
Beschreibung¶
Erstellen Sie einen XML-Wert, indem Sie eine Aggregation mehrerer Zeilen durchführen. Weitere Informationen dazu finden Sie unter XMLAGG.
Beispielhafte Quellcode-Muster¶
Datenkonfiguration¶
Teradata¶
Abfrage
Snowflake¶
Abfrage
XMLAGG-Transformation¶
Teradata¶
Abfrage
Ergebnis
Snowflake¶
Abfrage
Ergebnis
Bekannte Probleme¶
1. Die RETURNING-Klausel wird derzeit nicht unterstützt.
Der Benutzer wird gewarnt, dass die Übersetzung der RETURNING-Klausel in Zukunft hinzugefügt wird.
Zugehörige EWIs ¶
Keine zugehörigen EWIs.
CAST¶
Umwandlung von Zahlendatentypen in Varchar-Datentypen¶
Beim Umwandeln von Teradaten in Varchar werden Standardformate für jeden Zahlendatentyp verwendet. SnowConvert AI fügt daher Formate hinzu, um die Äquivalenz zwischen den Plattformen beizubehalten.
Beispielhafte Quellcode-Muster¶
BYTEINT¶
Teradata¶
Abfrage
Ergebnis
Snowflake¶
Abfrage
Ergebnis
SMALLINT¶
Teradata¶
Abfrage
Ergebnis
Snowflake¶
Abfrage
Ergebnis
"'""'|| LEFT(TO_VARCHAR(CAST(123 AS SMALLINT), 'TM'), 10) ||'""'"
-----------------------------------------------------------------
"123"
INTEGER¶
Teradata¶
Abfrage
Ergebnis
Snowflake¶
Abfrage
Ergebnis
BIGINT¶
Teradata¶
Abfrage
Ergebnis
Snowflake¶
Abfrage
Ergebnis
DECIMAL[(n[,m])] oder NUMERIC[(n[,m])]¶
Teradata¶
Abfrage
Ergebnis
Snowflake¶
Abfrage
Ergebnis
'"'|| LEFT(TO_VARCHAR(CAST(12345 AS DECIMAL), 'TM.'), 10) ||'"' '"'|| LEFT(TO_VARCHAR(CAST(12345 AS DECIMAL(12, 2)), 'TM'), 10) ||'"'
"12345." "12345.00"
Bekannte Probleme ¶
Teradata behandelt die Zahlen zwischen 0 und 1 anders als Snowflake. Für diese Werte fügt Teradata die Null vor dem Punkt nicht hinzu, während Snowflake dies tut.
Teradata¶
Abfrage
Ergebnis
Snowflake¶
Abfrage
Ergebnis
Zugehörige EWIs ¶
Keine zugehörigen EWIs.
Umwandlung in DATE mit { }¶
Beschreibung¶
Die folgende Syntax wandelt eine datumsformatierte Zeichenfolge in den Datentyp DATE um, indem Sie ein d vor die Zeichenfolgendefinition in geschweiften Klammern setzen.
Beispielhafte Quellcode-Muster¶
Umwandlung in DATE mit geschweiften Klammern¶
Teradata
Cast to Date
Snowflake
Cast to Date
Umwandlung in INTERVAL-Datentyp¶
Beschreibung¶
Snowflake unterstützt den Datentyp „Interval“ nicht, verfügt aber über INTERVAL-Konstanten, die in DateTime-Operationen verwendet werden können und andere Verwendungen können mit VARCHAR emuliert werden. SnowConvert AI transformiert CAST-Funktionen für den INTERVAL-Datentyp je nach Fall in ein entsprechendes Äquivalent:
Wenn der umgewandelte Wert vom Typ Intervall ist, wird eine UDF generiert, die das neue Intervalläquivalent als Zeichenfolge erzeugt
When the value is a literal, a Snowflake interval constant will be generated if the cast is used in a datetime operation, otherwise a literal string will be generated
Wenn der Wert nicht literal ist, wird eine Umwandlung in Zeichenfolge erzeugt
Beispielhafte Quellcode-Muster¶
Nicht-Intervall-Literale¶
Teradata¶
Abfrage
Ergebnis
Snowflake¶
Abfrage
Ergebnis
Werte von Nicht-Literalen und Nicht-Intervallen¶
Teradata¶
Abfrage
Ergebnis
Snowflake¶
Abfrage
Ergebnis
Besetzung eines Intervalls mit einem anderen Intervall¶
Teradata¶
Abfrage
Ergebnis
Snowflake¶
Abfrage
Ergebnis
Bekannte Probleme¶
Keine bekannten Probleme.
Zugehörige EWIs¶
Keine zugehörigen EWIs.