SQL-Übersetzungsreferenz

Verwenden Sie dies als Leitfaden, um zu verstehen, wie der umgewandelte Code aussehen könnte, wenn Sie von Teradata zu Snowflake migrieren. SQL hat eine ähnliche Syntax zwischen den Dialekten, aber jeder Dialekt kann neue Funktionalitäten erweitern oder hinzufügen.

Bemerkung

Auf dieser Seite sind nur die Funktionen aufgeführt, die bereits von SnowConvert umgewandelt wurden. Wenn eine Funktion aus der Teradata-Dokumentation dort nicht aufgeführt ist, sollte sie als nicht unterstützt betrachtet werden.

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

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

Siehe Arithmetische, Trigonometrische, Hyperbolische Operatoren/Funktionen

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
CURTIME

CURRENT_TIME

CURRENT_TIMESTAMP

CURRENT_TIMESTAMP

DATABASE

CURRENT_DATABASE

DATE

CURRENT_DATE

NOW

CURRENT_TIMESTAMP

PROFILE

CURRENT_ROLE

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‘)
DAYNUMBER_OF_WEEK(DatetimeValue)

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

DAYOFMONTH

TD_DAY_OF_WEEK
DAYOFWEEK

TD_DAY_OF_WEEK_UDF

TD_DAY_OF_YEAR

DAYOFYEAR

TD_MONTH_OF_CALENDAR(DateTimeValue)
MONTH_CALENDAR(DateTimeValue)

TD_MONTH_OF_CALENDAR_UDF(DateTimeValue)

TD_WEEK_OF_CALENDAR(DateTimeValue)
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

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

TRYCAST

TRY_CAST

FROM_BYTES

TO_NUMBER
TO_BINARY

mit dem Parameter ASCII wird in Snowflake nicht unterstützt.

Siehe Datentypkonvertierungen

Datentypkonvertierungsfunktionen

Teradata

Snowflake

Hinweis

TO_BYTES(Input, ‚Base10‘)

INT2HEX_UDF(Eingabe)

TO_NUMBER

TO_NUMBER

TO_CHAR

TO_CHAR oder ein entsprechender Ausdruck

TO_DATE

TO_DATE

TO_DATE(input, ‚YYYYDDD‘)

JULIAN_TO_DATE_UDF

Siehe Datentypkonvertierungsfunktionen

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

Siehe DateTime und Intervallfunktionen und Ausdrücke

Hash-Funktionen

Teradata

Snowflake

Hinweis

HASH_MD5

MD5

HASHAMP

HASHBACKAM

HASHBUCKET

HASHROW

Nicht unterstützt

Prüfen Sie die Hinweise auf [zu den Architekturunterschieden zwischen Teradata und Snowflake](../../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/README. md)

Siehe Hashwert-Funktionen

JSON-Funktionen

Teradata

Snowflake

Hinweis

NEW JSON

TO_JSON(PARSE_JSON() )

JSON_CHECK

CHECK_JSON

Prüfen Sie JSON_CHECK

JSON_TABLE

Äquivalente Abfrage

JSONExtract

JSONExtractValue
JSONExtractLargeValue

JSON_EXTRACT_UDF

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(datetimeValue, UNTIL_CLOSED)

PERIOD_UDF(datetimeValue, ‚9999-12-31 23:59:59,999999‘)

RDIFF

PERIOD_RDIFF_UDF

Siehe Periodenfunktionen und Operatoren

Abfrageband-Funktionen

Teradata

Snowflake

Hinweis

GETQUERYBANDVALUE

GETQUERYBANDVALUE_UDF

Siehe Abfrageband-Funktionen

Regex-Funktionen

Teradata

Snowflake

Hinweis

REGEXP_INSTR

REGEXP_INSTR

REGEXP_REPLACE

REGEXP_REPLACE

REGEXP_SIMILAR

REGEXP_LIKE

REGEXP_SUBSTR

REGEXP_SUBSTR

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

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

REVERSE

REVERSE

RIGHT

RIGHT

RPAD

RPAD

RTRIM

RTRIM

SOUNDEX

SOUNDEX_P123

STRTOK

STRTOK

STRTOK_SPLIT_TO_TABLE

STRTOK_SPLIT_TO_TABLE

SUBSTRING

SUBSTR/SUBSTR_UDF

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

Siehe Zeichenfolge-Operatoren und -Funktionen​​​

St_Point-Funktionen

Teradata

Snowflake

Hinweis

ST_SPHERICALDISTANCE

HAVERSINE
ST_DISTANCE

Siehe St_Point-Funktionen

Tabellen-Operatoren

Teradata

Snowflake

Hinweis

TD_UNPIVOT

Äquivalente Abfrage

Siehe Tabellen-Operatoren

XML-Funktionen

Teradata

Snowflake

Hinweis

XMLAGG

LISTAGG

XMLQUERY

Nicht unterstützt

Siehe XML-Funktionen

Erweiterbarkeits-UDFs

Dieser Abschnitt enthält UDFs und andere Erweiterungsfunktionen, die von Teradata nicht als systemeigene Funktionen angeboten werden, sondern von SnowConvert

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.

Endgültig gebundene Konstanten (UNTIL_CHANGED und UNTIL_CLOSED)

Sowohl UNTIL_CHANGED als auch UNTIL_CLOSED sind Teradata-Konstanten, die eine undefinierte Endgrenze für Zeiträume 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:

SELECT INDEX(35, '5');
Copy

Das Ergebnis ist 4, während die CHARINDEX-Entsprechung in Snowflake:

SELECT CHARINDEX('5', 35);
Copy

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:

  • Wenn der Parameter not eine Umwandlung mit Format hat, wird stattdessen eine Funktion von SnowflakeTO_VARCHARmit dem Standard-Teradata-Format-Äquivalent in Snowflake hinzugefügt.

  • Wenn der Parameter eine Formatumwandlung hat, dann wird das Format in sein Snowflake-Äquivalent konvertiert und die FunktionTO_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:

SELECT CHARINDEX( '5', TO_VARCHAR(35, 'MI999'));
Copy

Das Ergebnis ist 4, das gleiche wie der Teradata-Code.

Bekannte Probleme

Es wurden keine Probleme gefunden.