Referência de conversão SQL

Use isso como um guia para entender como o código transformado pode parecer ao migrar do Teradata para o Snowflake SQL tem uma sintaxe semelhante entre os dialetos, mas cada dialeto pode estender ou adicionar novas funcionalidades.

Nota

Esta página lista apenas as funções que já foram transformadas pelo SnowConvert. Se uma função da documentação do Teradata não estiver listada aqui, ela deverá ser considerada sem suporte.

Funções de agregação

Teradata

Snowflake

Observação

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 com várias funções<br>não é compatível com o Snowflake</p>

VAR_POP

VAR_POP

VAR_SAMP

VAR_SAMP

Consulte Funções agregadas

Operadores/Funções aritméticas, trigonométricas e hiperbólicas

Teradata

Snowflake

Observação

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(param)

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

Consulte Operadores/Funções aritméticas, trigonométricas e hiperbólicas

Funções de atributo

Teradata

Snowflake

Observação

BIT_LENGTH

BIT_LENGTH

BYTE

BYTES

LENGTH

CHAR

CHARS

CHARACTERS

LEN

CHAR_LENGTH

CHARACTER_LENGTH

LEN

MCHARACTERS

LENGTH

OCTECT_LENGTH

OCTECT_LENGTH

Consulte Funções de atributo

Funções de manipulação de bit/byte

Teradata

Snowflake

Observação

BITAND

BITAND

BITNOT

BITNOT

BITOR

BITOR

BITXOR

BITXOR

GETBIT

GETBIT

Consulte Funções de bit/byte

Integradas (funções do sistema)

Teradata

Snowflake

Observação

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

Consulte Funções integradas

Calendários de negócios

Teradata

Snowflake

Observação

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

Consulte Calendários de negócios

Funções de calendário

Teradata

Snowflake

Observação

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)

Consulte Funções de calendário

Funções de caso

Teradata

Snowflake

Observação

COALESCE

COALESCE

NULLIF

NULLIF

Consulte funções de caso

Funções de comparação

Teradata

Snowflake

Observação

DECODE

DECODE

GREATEST

GREATEST

LEAST

LEAST

Consulte funções de comparação

Conversões do tipo de dados

Teradata

Snowflake

Observação

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

com o parâmetro ASCII não é compatível com o Snowflake.

Consulte Conversões de tipos de dados

Funções de conversão de tipos de dados

Teradata

Snowflake

Observação

TO_BYTES(Input, “Base10”)

INT2HEX_UDF(Input)

TO_NUMBER

TO_NUMBER

TO_CHAR

TO_CHAR ou expressão equivalente

TO_DATE

TO_DATE

TO_DATE(input, “YYYYDDD”)

JULIAN_TO_DATE_UDF

Consulte Funções de conversão de tipo de dados

DateTime e funções de intervalo

Teradata

Snowflake

Observação

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(Numeric)

ROUND

ROUND(Date)

ROUND_DATE_UDF

TRUNC(Date)

TRUNC_UDF

YEAR

YEAR

Consulte DateTime e funções e expressões de intervalo

Funções de hash

Teradata

Snowflake

Observação

HASH_MD5

MD5

HASHAMP

HASHBACKAM

HASHBUCKET

HASHROW

Sem suporte

Verifique as notas sobre as diferenças de arquitetura entre o Teradata e o Snowflake

Consulte Funções de hash

Funções JSON

Teradata

Snowflake

Observação

NEW JSON

TO_JSON(PARSE_JSON() )

JSON_CHECK

CHECK_JSON

Verifique JSON_CHECK

JSON_TABLE

Consulta equivalente

JSONExtract

JSONExtractValue
JSONExtractLargeValue

JSON_EXTRACT_UDF

Consulte a documentação do JSON

Funções de tratamento de nulos

Teradata

Snowflake

Observação

NVL

NVL

NVL2

NVL2

Consulte Funções de tratamento de nulos

Funções de agregação de janela/análise ordenada

Teradata

Snowflake

Observação

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

Consulte Funções da janela

Funções e operadores de período

Teradata

Snowflake

Observação

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

Consulte Funções e operadores de período

Funções de banda de consulta

Teradata

Snowflake

Observação

GETQUERYBANDVALUE

GETQUERYBANDVALUE_UDF

Consulte Funções de banda de consulta

Funções Regex

Teradata

Snowflake

Observação

REGEXP_INSTR

REGEXP_INSTR

REGEXP_REPLACE

REGEXP_REPLACE

REGEXP_SIMILAR

REGEXP_LIKE

REGEXP_SUBSTR

REGEXP_SUBSTR

Consulte Funções Regex

Operadores e funções de cadeia de caracteres

Teradata

Snowflake

Observação

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

Consulte Funções e operadores de cadeia de caracteres​​​

Funções St_Point

Teradata

Snowflake

Observação

ST_SPHERICALDISTANCE

HAVERSINE
ST_DISTANCE

Consulte Funções St_Point

Operadores de tabela

Teradata

Snowflake

Observação

TD_UNPIVOT

Consulta equivalente

Consulte Operadores de tabela

Funções XML

Teradata

Snowflake

Observação

XMLAGG

LISTAGG

XMLQUERY

Sem suporte

Consulte Funções XML

UDFs de extensibilidade

Esta seção contém UDFs e outras funções de extensibilidade que não são oferecidas como funções integradas ao sistema pelo Teradata, mas que são transformadas pelo SnowConvert

Teradata

Snowflake

Observação

CHKNUM

CHKNUM_UDF

Consulte esta página de download de UDF

Notas

Diferenças de arquitetura entre o Teradata e o Snowflake

O Teradata tem uma arquitetura sem compartilhamento com Access Module Processors (AMP), em que cada AMP gerencia sua própria parcela de armazenamento em disco e é acessado por meio de hashing ao fazer consultas. Para aproveitar o paralelismo, as informações armazenadas devem ser distribuídas uniformemente entre AMPs e, para isso, o Teradata oferece um grupo de funções relacionadas a hash que podem ser usadas para determinar a qualidade dos índices primários reais.

Por outro lado, a arquitetura do Snowflake é diferente e gerencia a forma como os dados são armazenados por conta própria, o que significa que os usuários não precisam se preocupar em otimizar a distribuição dos dados.

Constantes de limite final (UNTIL_CHANGED e UNTIL_CLOSED)

Tanto UNTIL_CHANGED quanto UNTIL_CLOSED são constantes do Teradata que representam um limite final indefinido para períodos. Internamente, essas constantes são representadas como o valor máximo que um carimbo de data/hora pode ter, ou seja, “9999-12-31 23:59:59.999999”. Durante a migração da função PERIOD, o limite final é verificado, se presente, para determinar se é uma dessas constantes e para substituí-lo por varchar de valor “9999-12-31 23:59:59.999999”, caso seja, o Snowflake então converte o varchar em data ou carimbo de data/hora, dependendo do tipo do limite inicial ao chamar PERIOD____UDF.

Conversão implícita

Algumas funções de cadeia de caracteres do Teradata, como INDEX ou POSITION, aceitam tipos de dados diferentes e os convertem implicitamente em cadeia de caracteres, o que pode causar inconsistências nos resultados dessas funções entre o Teradata e o Snowflake. Por exemplo, o seguinte código do Teradata:

SELECT INDEX(35, '5');
Copy

Retorna 4, enquanto o equivalente CHARINDEX no Snowflake:

SELECT CHARINDEX('5', 35);
Copy

Retorna 2, isso acontece porque o Teradata tem seus próprios formatos padrão que são usados durante a conversão implícita. No exemplo acima, o Teradata interpreta a constante numérica 35 como BYTEINT e usa o formato padrão BYTEINT'-999' para a conversão implícita em cadeia de caracteres, fazendo com que o valor convertido seja ' 35'. Por outro lado, o Snowflake usa seus próprios formatos padrão, criando inconsistências no resultado.

Para resolver isso, as seguintes alterações são feitas nesses parâmetros de função:

  • Se o parâmetro não tiver uma conversão com formato, será adicionada uma função TO_VARCHARdo Snowflake com o equivalente ao formato padrão do Teradata no Snowflake.

  • Se o parâmetro tiver uma conversão com formato, o formato será convertido em seu equivalente no Snowflake e a funçãoTO_VARCHARserá adicionada.

    • Como observação adicional, o Teradata ignora o sinal de um número se ele não for explicitamente colocado em um formato, enquanto o Snowflake sempre adiciona espaços para inserir o sinal, mesmo quando não especificado. Nesses casos, é feita uma verificação para ver se o sinal foi especificado e para removê-lo da cadeia de caracteres do Snowflake, caso não tenha sido.

Após essas alterações, o código resultante seria o seguinte:

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

Que retorna 4, o mesmo que o código do Teradata.

Problemas conhecidos

Não foram encontrados problemas.