SnowConvert AI - Redshift - 데이터 타입¶
SnowConvert AI의 Redshift에 대한 현재 데이터 타입 변환입니다.
Snowflake는 대부분의 기본 SQL 데이터 타입 (일부 제한 있음)을 열, 로컬 변수, 식, 매개 변수, 기타 모든 적절한/적합한 위치에 사용할 수 있도록 지원합니다.
숫자 데이터 타입 ¶
Redshift |
Snowflake |
참고 |
|---|---|---|
INT |
INT |
Snowflake의 INT 는 NUMBER 의 별칭입니다. |
INT2 |
SMALLINT |
Snowflake의 INT2 는 NUMBER 의 별칭입니다. |
INT4 |
INTEGER |
Snowflake의 INT4 는 NUMBER 의 별칭입니다. |
INT8 |
INTEGER |
Snowflake의 INT8 는 NUMBER 의 별칭입니다. |
INTEGER |
INTEGER |
Snowflake의 INTEGER 는 NUMBER 의 별칭입니다. |
BIGINT |
BIGINT |
Snowflake의 BIGINT 는 NUMBER 의 별칭입니다. |
DECIMAL |
DECIMAL |
Snowflake의 DECIMAL 은 NUMBER 의 별칭입니다. |
DOUBLE PRECISION |
DOUBLE PRECISION |
Snowflake의 DOUBLE PRECISION 은 FLOAT 의 별칭입니다. |
NUMERIC |
NUMERIC |
Snowflake의 NUMERIC 은 NUMBER 의 별칭입니다. |
SMALLINT |
SMALLINT |
Snowflake의 SMALLINT 는 NUMBER 의 별칭입니다. |
FLOAT |
FLOAT |
Snowflake는 배정밀도(64비트) IEEE 754 부동 소수점 숫자를 사용합니다. |
FLOAT4 |
FLOAT4 |
Snowflake의 FLOAT4 는 FLOAT 의 별칭입니다. |
FLOAT8 |
FLOAT8 |
Snowflake의 FLOAT8 은 FLOAT 의 별칭입니다. |
REAL |
REAL |
Snowflake의 REAL 은 FLOAT 의 별칭입니다. |
문자 유형 ¶
Redshift |
Snowflake |
참고 |
|---|---|---|
VARCHAR |
VARCHAR |
VARCHAR 는 유니코드 UTF-8 문자를 보유합니다. 길이를 지정하지 않을 경우 기본값은 최대 허용 길이(16,777,216)입니다. |
CHAR |
CHAR |
Snowflake의 CHAR 은 VARCHAR 의 별칭입니다. |
CHARACTER |
CHARACTER |
Snowflake의 CHARACTER 는 VARCHAR 의 별칭입니다. |
NCHAR |
NCHAR |
Snowflake의 NCHAR 은 VARCHAR 의 별칭입니다. |
BPCHAR |
VARCHAR |
BPCHAR 데이터 타입은 Snowflake에서 지원되지 않습니다. VARCHAR 이 대신 사용됩니다. 자세한 내용은 SSC-FDM-PG0002를 참조하십시오. |
NVARCHAR |
NVARCHAR |
Snowflake의 NVARCHAR 은 VARCHAR 의 별칭입니다. |
CHARACTER VARYING |
CHARACTER VARYING |
Snowflake의 CHARACTER VARYING 은 VARCHAR 의 별칭입니다. |
NATIONAL CHARACTER |
NCHAR |
Snowflake의 NCHAR 은 VARCHAR 의 별칭입니다. |
NATIONAL CHARACTER VARYING |
NCHAR VARYING |
Snowflake의 NCHAR VARYING 은 VARCHAR 의 별칭입니다. |
TEXT |
TEXT |
Snowflake의 TEXT 는 VARCHAR 의 별칭입니다. |
NAME (특수 문자 유형) |
VARCHAR |
VARCHAR 는 유니코드 UTF-8 문자를 보유합니다. 길이를 지정하지 않을 경우 기본값은 최대 허용 길이(16,777,216)입니다. |
참고
Redshift 데이터 타입에 MAX 전체 자릿수 인자가 있는 경우, 해당 데이터 타입은 Snowflake에서 지원하는 기본 최대 전체 자릿수로 변환됩니다.
부울 유형 ¶
Redshift |
Snowflake |
참고 |
|---|---|---|
BOOL |
BOOLEAN |
|
BOOLEAN |
BOOLEAN |
이진 데이터 타입 ¶
Redshift |
Snowflake |
참고 |
|---|---|---|
VARBYTE |
VARBINARY |
VARBINARY는 BINARY와 동의어입니다. |
VARBINARY |
VARBINARY |
VARBINARY는 BINARY와 동의어입니다. |
BINARY |
BINARY |
최대 길이는 8 MB (8,388,608바이트)입니다. |
BINARY VARYING |
BINARY VARYING |
BINARY VARYING 은 BINARY 와 동의어입니다. |
경고
Redshift에서 이진형의 최대 길이는 16 MB (16,777,216바이트)이지만, Snowflake에서는 8 MB (8,388,608바이트)입니다. 최대 길이가 줄어든 점을 고려하십시오.
날짜 & 시간 데이터 타입 ¶
Redshift |
Snowflake |
참고 |
|---|---|---|
DATE |
DATE |
DATE 는 가장 일반적인 형식( |
TIME |
TIME |
|
TIMETZ |
TIME |
시간 데이터 타입에 타임존이 지원되지 않습니다. 자세한 내용은 SSC-FDM-0005 를 참조하십시오. |
TIME WITH TIME ZONE |
TIME |
시간 데이터 타입에 타임존이 지원되지 않습니다. 자세한 내용은 SSC-FDM-0005 를 참조하십시오. |
TIME WITHOUT TIME ZONE |
TIME |
Snowflake는 시간을 |
TIMESTAMP |
TIMESTAMP |
타임스탬프 정밀도는 0(초)~9(나노초)의 범위로 지정할 수 있습니다. |
TIMESTAMPTZ |
TIMESTAMP_TZ |
TIMESTAMP\TZ 는 내부적으로 UTC 시간을 관련 _time zone offset_과 함께 저장합니다. |
TIMESTAMP WITH TIME ZONE |
TIMESTAMP_TZ |
TIMESTAMP\TZ 는 내부적으로 UTC 시간을 관련 _time zone offset_과 함께 저장합니다. |
TIMESTAMP WITHOUT TIME ZONE |
TIMESTAMP_NTZ |
TIMESTAMP\NTZ 는 내부적으로 지정된 전체 자릿수로 “현지” 시간을 저장합니다. |
INTERVAL YEAR TO MONTH |
VARCHAR |
간격 데이터 타입은 Snowflake에서 지원되지 않습니다. VARCHAR 로 변경되었습니다. |
INTERVAL DAY TO SECOND |
VARCHAR |
간격 데이터 타입은 Snowflake에서 지원되지 않습니다. VARCHAR 로 변경되었습니다. |
기타 데이터 타입 ¶
Redshift |
Snowflake |
참고 |
|---|---|---|
GEOMETRY |
GEOMETRY |
좌표는 실수 쌍(x, y)으로 표시됩니다. 현재, 2D 좌표만 지원됩니다. |
GEOGRAPHY |
GEOGRAPHY |
GEOGRAPHY 데이터 타입은 WGS 84 표준을 따릅니다. |
HLLSKETCH |
N/A |
Snowflake에서 지원되지 않는 데이터 타입입니다. 자세한 내용은 SSC-EWI-RS0004를 참조하십시오. |
SUPER |
VARIANT |
OBJECT 및 ARRAY 값을 포함하여 다른 데이터 타입의 값을 포함할 수 있습니다. |
INTERVAL DAY TO SECOND 데이터 타입¶
설명¶
INTERVAL DAY TO SECOND 간격 리터럴을 지정하여 일, 시간, 분, 초 단위로 기간을 정의합니다. (RedShift SQL Language Reference 간격 데이터 타입)
이 데이터 타입에 해당하는 데이터 타입은 Snowflake에 없으며, 현재 VARCHAR 로 변환됩니다.
문법 구문 ¶
INTERVAL day_to_second_qualifier [ (fractional_precision) ]
day_to_second_qualifier:
{ DAY | HOUR | MINUTE | SECOND | DAY TO HOUR | DAY TO MINUTE | DAY TO SECOND |
HOUR TO MINUTE | HOUR TO SECOND | MINUTE TO SECOND }
경고
Interval 데이터 타입의 사용은 향후 업데이트에서 구현될 계획입니다.
샘플 소스 패턴¶
Create Table에서 일에서 초 사이의 간격¶
입력¶
Redshift¶
CREATE TABLE interval_day_to_second_table
(
interval_day_col1 INTERVAL DAY TO HOUR,
interval_day_col2 INTERVAL DAY TO SECOND(4)
);
INSERT INTO interval_day_to_second_table(interval_day_col1) VALUES ( INTERVAL '1 2' DAY TO HOUR );
INSERT INTO interval_day_to_second_table(interval_day_col2) VALUES ( INTERVAL '1 2:3:4.56' DAY TO SECOND(4));
출력¶
Snowflake¶
CREATE TABLE interval_day_to_second_table
(
interval_day_col1 VARCHAR !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - INTERVAL DAY TO HOUR DATA TYPE CONVERTED TO VARCHAR ***/!!!,
interval_day_col2 VARCHAR !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - INTERVAL DAY TO SECOND(4) DATA TYPE CONVERTED TO VARCHAR ***/!!!
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"redshift"}}'
;
INSERT INTO interval_day_to_second_table(interval_day_col1) VALUES ('1days, 2hours');
INSERT INTO interval_day_to_second_table(interval_day_col2) VALUES ('1days, 2hours, 3mins, 4secs, 56ms');
간격 값은 지원되는 Snowflake 형식으로 변환된 다음 열 내부에 텍스트로 삽입됩니다. Snowflake는 Interval 을 데이터 타입으로 지원하지 않으므로 산술 작업에서만 지원됩니다. 이 값을 사용하려면 값을 추출하여 간격 상수 로 사용해야 합니다(가능한 경우).
Original Redshift value: INTERVAL '1 2:3:4.567' DAY TO SECOND
Snowflake 열에 저장된 값: '1days, 2hours, 3mins, 4secs, 56ms'
Snowflake 간격 상수 값: INTERVAL '1days, 2hours, 3mins, 4secs, 56ms'
간격 일에서 두 번째 열로 데이터 검색하기¶
입력¶
Redshift¶
SELECT * FROM interval_day_to_second_table;
결과¶
interval_day_col1 |
interval_day_col2 |
|---|---|
1일 2시간 0분 0.0초 |
NULL |
NULL |
1일 2시간 3분 4.56초 |
출력¶
Snowflake¶
SELECT * FROM
interval_day_to_second_table;
결과¶
interval_day_col1 |
interval_day_col2 |
|---|---|
1일, 2시간 |
NULL |
NULL |
1일, 2시간, 3분, 4초, 56밀리초 |
Known Issues¶
1. Only arithmetic operations are supported¶
Snowflake 간격에는 몇 가지 제한 사항이 있습니다. DATE 또는 TIMESTAMP 및 Interval Constants 간의 산술 연산만 지원되며, 다른 모든 시나리오는 지원되지 않습니다.
관련 EWIs¶
SSC-EWI-0036: 데이터 타입이 다른 데이터 타입으로 변환되었습니다.
INTERVAL YEAR TO MONTH 데이터 타입¶
설명¶
INTERVAL YEAR TO MONTH 간격 데이터 타입을 지정하여 연도 및 월 단위로 기간을 저장합니다. (RedShiftSQL Language Reference 간격 데이터 타입)
이 데이터 타입에 해당하는 데이터 타입은 Snowflake에 없으며, 현재 VARCHAR 로 변환됩니다.
문법 구문 ¶
INTERVAL {YEAR | MONTH | YEAR TO MONTH}
경고
Interval 데이터 타입의 사용은 향후 업데이트에서 구현될 계획입니다.
샘플 소스 패턴¶
Create Table의 연도 간 월 간 간격¶
입력:¶
Redshift¶
CREATE TABLE interval_year_to_month_table
(
interval_year_col1 INTERVAL YEAR,
interval_year_col2 INTERVAL MONTH,
interval_year_col3 INTERVAL YEAR TO MONTH
);
INSERT INTO interval_year_to_month_table(interval_year_col1) VALUES ( INTERVAL '12' YEAR);
INSERT INTO interval_year_to_month_table(interval_year_col2) VALUES ( INTERVAL '5' MONTH);
INSERT INTO interval_year_to_month_table(interval_year_col3) VALUES ( INTERVAL '1000-11' YEAR TO MONTH );
출력¶
Snowflake¶
CREATE TABLE interval_year_to_month_table
(
interval_year_col1 VARCHAR !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - INTERVAL YEAR DATA TYPE CONVERTED TO VARCHAR ***/!!!,
interval_year_col2 VARCHAR !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - INTERVAL MONTH DATA TYPE CONVERTED TO VARCHAR ***/!!!,
interval_year_col3 VARCHAR !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - INTERVAL YEAR TO MONTH DATA TYPE CONVERTED TO VARCHAR ***/!!!
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"redshift"}}'
;
INSERT INTO interval_year_to_month_table(interval_year_col1) VALUES ('12year, 0mons');
INSERT INTO interval_year_to_month_table(interval_year_col2) VALUES ('0year, 5mons');
INSERT INTO interval_year_to_month_table(interval_year_col3) VALUES ('1000year, 11mons');
간격 값은 지원되는 Snowflake 형식으로 변환된 다음 열 내부에 텍스트로 삽입됩니다. Snowflake는 Interval 을 데이터 타입으로 지원하지 않으므로 산술 작업에서만 지원됩니다. 이 값을 사용하려면 값을 추출하여 간격 상수 로 사용해야 합니다(가능한 경우).
원본 편위 값: INTERVAL'1-2'YEARTOMONTH
Snowflake 열에 저장된 값: '1y, 2m'
Snowflake 간격 상수 값: INTERVAL '1y, 2m'
연도 간에서 월 간 열에서 데이터 검색하기¶
입력¶
Redshift¶
SELECT * FROM interval_year_to_month_table;
결과¶
interval_year_col1 |
interval_year_col2 |
interval_year_col2 |
|---|---|---|
12 years 0 mons |
NULL |
NULL |
NULL |
0 years 5 mons |
NULL |
NULL |
NULL |
1000 years 11 mons |
출력¶
Snowflake¶
SELECT * FROM
interval_year_to_month_table;
결과¶
interval_year_col1 |
interval_year_col2 |
interval_year_col2 |
|---|---|---|
12 y 0 mm |
NULL |
NULL |
NULL |
0 y 5 mm |
NULL |
NULL |
NULL |
1000 y 11 mons |
Known Issues¶
1. Only arithmetic operations are supported¶
Snowflake 간격에는 몇 가지 제한 사항이 있습니다. DATE 또는 TIMESTAMP 및 Interval Constants 간의 산술 연산만 지원되며, 다른 모든 시나리오는 지원되지 않습니다.
관련 EWIs¶
SSC-EWI-0036: 데이터 타입이 다른 데이터 타입으로 변환되었습니다.
숫자 형식 모델¶
설명¶
다음은 Redshift 에서 지원하는 다양한 숫자 형식과 이에 상응하는 Snowflake 의 형식입니다.
Redshift |
Snowflake |
주석 |
|---|---|---|
0 |
0 |
|
9 |
9 |
|
. (기간), D |
. (기간), D |
|
, (쉼표) |
, (쉼표) |
|
CC |
현재 Snowflake에는 Century Code에 해당하는 항목이 없습니다. |
|
FM |
FM |
|
PR |
현재 Snowflake에는 이 형식에 해당하는 항목이 없습니다. |
|
S |
S |
명시적 숫자 기호. |
L |
$ |
통화 기호 자리 표시자. |
G |
G |
|
MI |
MI |
마이너스 기호(음수의 경우) |
PL |
S |
현재 Snowflake에는 더하기 기호에 해당하는 기능이 없습니다. 따라서 명시적 숫자 기호로 변환됩니다. |
SG |
S |
명시적 숫자 지정된 위치에 기입합니다. |
RN |
현재 Snowflake의 로마 숫자에 해당하는 것은 없습니다. |
|
TH |
현재 Snowflake의 서수 접미사에 해당하는 것은 없습니다 |
샘플 소스 패턴¶
To_Number 함수에서 사용¶
입력:¶
Redshift¶
select to_number('09423', '999999999') as multiple_nines
, to_number('09423', '00000') as exact_zeros
, to_number('123.456', '999D999') as decimals
, to_number('123,031.30', 'FM999,999D999') as fill_mode
, to_number('$ 12,454.88', '$999,999.99') as currency
;
결과¶
| multiple_nines | exact_zeros | decimals | fill_mode | currency |
|---|---|---|---|---|
| 9423 | 9423 | 123.456 | 123031.30 | 1254.88 |
출력¶
Snowflake¶
select to_number('09423', '999999999') !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR ''999999999'' NODE ***/!!! as multiple_nines
, to_number('09423', '00000') !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR ''00000'' NODE ***/!!! as exact_zeros
, to_number('123.456', '999D999') !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR ''999D999'' NODE ***/!!! as decimals
, to_number('123,031.30', 'FM999,999D999') !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR ''FM999,999D999'' NODE ***/!!! as fill_mode
, to_number('$ 12,454.88', '$999,999.99') !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR ''$999,999.99'' NODE ***/!!! as currency
;
결과¶
| multiple_nines | exact_zeros | decimals | fill_mode | currency |
|---|---|---|---|---|
| 9423 | 9423 | 123.456 | 123031.300 | 12454.88 |
입력:¶
Redshift¶
select to_number('$ 12,454.88', 'FML99G999D99') as currency_L
, to_number('123-', '999S') as signed_number_end
, to_number('+12454.88', 'PL99G999D99') as plus_sign
, to_number('-12,454.88', 'MI99G999D99') as minus_sign
, to_number('-12,454.88', 'SG99G999D99') as signed_number
;
결과¶
| currency_L | signed_number_end | plus_sign | minus_sign | signed_number |
|---|---|---|---|---|
| 12454.8 | -123 | 1254.88 | -12454.88 | -12454.88 |
출력:¶
Snowflake¶
select to_number('$ 12,454.88', 'FML99G999D99') !!!RESOLVE EWI!!! /*** SSC-EWI-0006 - 'FML99G999D99' FORMAT MAY FAIL OR MAY HAVE A DIFFERENT BEHAVIOR IN SNOWFLAKE. ***/!!! as currency_L
, to_number('123-', '999S') !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR ''999S'' NODE ***/!!! as signed_number_end
, to_number('+12454.88', 'PL99G999D99') !!!RESOLVE EWI!!! /*** SSC-EWI-0006 - 'PL99G999D99' FORMAT MAY FAIL OR MAY HAVE A DIFFERENT BEHAVIOR IN SNOWFLAKE. ***/!!! as plus_sign
, to_number('-12,454.88', 'MI99G999D99') !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR ''MI99G999D99'' NODE ***/!!! as minus_sign
, to_number('-12,454.88', 'SG99G999D99') !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR ''SG99G999D99'' NODE ***/!!! as signed_number
;
결과¶
| currency_L | signed_number_end | plus_sign | minus_sign | signed_number |
|---|---|---|---|---|
| 12454.8 | -123 | 1254.88 | -12454.88 | -12454.88 |
To_Char 함수에서 사용¶
입력:¶
Redshift¶
select to_char(-123, '999S') as signed_number
, to_char(12454.88, 'FM99G999D99') as decimal_number
, to_char(-12454.88, '99G999D99') as negative
, to_char(-12454.88, 'MI99G999D99') as minus_sign
, to_char(+12454.88, 'PL99G999D99') as plus_sign
, to_char(09423, '999999999') as multiple_nines
, to_char(09423, '00000') as exact_zeros
;
결과¶
| signed_number | decimal_number | negative | minus_sign | plus_sign | multiple_ninesmultiple_nines | exact_zerosexact_zeros |
|---|---|---|---|---|---|---|
| '123-' | '12,454.88' | '-12,454.88' | '12454.88' | '-12,454.88' | '09423' | '09423' |
출력:¶
Snowflake¶
select
TO_CHAR(-123, '999S') as signed_number,
TO_CHAR(12454.88, 'FM99G999D99') as decimal_number,
TO_CHAR(-12454.88, '99G999D99') as negative,
TO_CHAR(-12454.88, 'MI99G999D99') as minus_sign,
TO_CHAR(+12454.88, 'S99G999D99') as plus_sign,
TO_CHAR(09423, '999999999') as multiple_nines,
TO_CHAR(09423, '00000') as exact_zeros
;
결과¶
| signed_number | decimal_number | negative | minus_sign | plus_sign | multiple_ninesmultiple_nines | exact_zerosexact_zeros |
|---|---|---|---|---|---|---|
| '123-' | '12,454.88' | '-12,454.88' | '12454.88' | '-12,454.88' | '09423' | '09423' |
지원되지 않는 형식¶
다음 형식은 지원되지 않으며, 이 경우 EWI 로 표시됩니다.
입력:¶
SELECT to_char(123031, 'th999,999')
출력:¶
SELECT
TO_CHAR(123031, 'th999,999') !!!RESOLVE EWI!!! /*** SSC-EWI-0006 - th999,999 FORMAT MAY FAIL OR MAY HAVE A DIFFERENT BEHAVIOR IN SNOWFLAKE. ***/!!!
Known Issues¶
1. Using numeric signs inside the number not supported.¶
숫자 시작이 아닌 숫자 내부에 숫자 기호 형식(MI, SG 또는 PL)을 사용하거나 숫자 끝에 숫자 기호를 사용하는 경우 Snowflake에서 지원되지 않습니다
예
select to_number('12,-454.88', '99GMI999D99')
관련 EWIs¶
SSC-EWI-0006: Snowflake에서 현재 날짜/숫자 형식의 동작이 다를 수 있습니다.