PolyBase를 사용하여 형식 매핑

적용 대상: SQL Server(Windows에만 해당) Not supported. Azure SQL Database Not supported. Azure Synapse Analytics Not supported. Analytics Platform System(PDW)

이 문서에서는 PolyBase 외부 데이터 원본과 SQL Server 간의 매핑에 대해 설명합니다. 이 정보를 사용하여 CREATE EXTERNAL TABLE Transact-SQL 명령을 사용하여 외부 테이블을 올바르게 정의할 수 있습니다.

개요

PolyBase를 사용하여 외부 테이블을 만들 때 데이터 형식 및 열 수를 포함한 열 정의는 외부 파일의 데이터와 일치해야 합니다. 일치하지 않는 경우 실제 데이터를 쿼리할 때 파일 행이 거부됩니다.

외부 데이터 원본의 파일을 참조하는 외부 테이블의 경우 열 및 형식 정의가 외부 파일의 정확한 스키마에 매핑되어야 합니다. Hadoop/Hive에 저장된 데이터를 참조하는 데이터 형식을 정의하는 경우 SQL과 Hive 데이터 형식 간에 다음 매핑을 사용하고 그로부터 선택할 때 형식을 SQL 데이터 형식으로 캐스팅합니다. 달리 명시하지 않는 한 형식에는 Hive의 모든 버전이 포함되었습니다.

참고 항목

SQL Server는 변환에서 Hive 무한대 데이터 값을 지원하지 않습니다. PolyBase는 데이터 형식 변환 오류로 실패합니다.

Hadoop 형식 매핑 참조

SQL 데이터 형식 .NET 데이터 형식 Hive 데이터 형식 Hadoop/Java 데이터 형식1 설명
tinyint Byte tinyint ByteWritable 부호 없는 숫자만 해당합니다.
smallint Int16 smallint ShortWritable
int Int32 int IntWritable
bigint Int64 bigint LongWritable
bit 부울 부울 값 BooleanWritable
float Double double DoubleWritable
real Single float FloatWritable
money Decimal double DoubleWritable
smallmoney Decimal double DoubleWritable
nchar 문자열

Char[]
string Varchar
nvarchar 문자열

Char[]
string Varchar
char 문자열

Char[]
string Varchar
varchar 문자열

Char[]
string Varchar
binary Byte[] binary BytesWritable Hive 0.8 이상에 적용됩니다.
varbinary Byte[] binary BytesWritable Hive 0.8 이상에 적용됩니다.
date DateTime timestamp TimestampWritable
smalldatetime DateTime timestamp TimestampWritable
datetime2 DateTime timestamp TimestampWritable
Datetime DateTime timestamp TimestampWritable
time TimeSpan timestamp TimestampWritable
decimal Decimal decimal BigDecimalWritable Hive0.11 이상에 적용됩니다.

1 SQL Server 2022부터(16.x) Hadoop은 더 이상 지원되지 않습니다.

Parquet 및 델타 형식 매핑 참조

아래는 SQL Server 데이터 형식에 대한 Parquet 및 Delta 외부 테이블 형식 매핑입니다.

Parquet 및 Delta Lake 파일에는 모든 열에 대한 형식 설명이 포함되어 있습니다. 다음 표에서는 Parquet 형식이 SQL 네이티브 형식에 매핑되는 방법을 설명합니다.

Parquet 형식 Parquet 논리 형식(주석) SQL 데이터 형식
BOOLEAN bit
BINARY / BYTE_ARRAY varbinary
DOUBLE float
FLOAT real
INT32 int
INT64 bigint
INT96 datetime2
FIXED_LEN_BYTE_ARRAY binary
BINARY UTF8 varchar *(UTF8 데이터 정렬)
BINARY STRING varchar *(UTF8 데이터 정렬)
BINARY ENUM varchar *(UTF8 데이터 정렬)
FIXED_LEN_BYTE_ARRAY UUID uniqueidentifier
BINARY DECIMAL decimal
BINARY JSON varchar(8000) *(UTF8 데이터 정렬)
BINARY BSON 지원되지 않음
FIXED_LEN_BYTE_ARRAY DECIMAL decimal
BYTE_ARRAY INTERVAL 지원되지 않음
INT32 INT(8, true) smallint
INT32 INT(16, true) smallint
INT32 INT(32, true) int
INT32 INT(8, false) tinyint
INT32 INT(16, false) int
INT32 INT(32, false) bigint
INT32 DATE date
INT32 DECIMAL decimal
INT32 TIME(MILLIS) time
INT64 INT(64, true) bigint
INT64 INT(64, false) decimal(20,0)
INT64 DECIMAL decimal
INT64 TIME(MICROS) time
INT64 TIME(NANOS) 지원되지 않음
INT64 TIMESTAMP(utc로 정규화됨)(MILLIS/MICROS) datetime2
INT64 TIMESTAMP(utc로 정규화되지 않음)(MILLIS/MICROS) bigint - 날짜/시간 값으로 변환하기 전에 표준 시간대 오프셋을 사용하여 bigint 값을 명시적으로 조정해야 합니다.
INT64 TIMESTAMP(NANOS) 지원되지 않음
복합 형식 명단 등록 varchar(8000), JSON으로 직렬화
복합 형식 MAP varchar(8000), JSON으로 직렬화

Oracle 형식 매핑 참조

Oracle 데이터 형식 SQL Server 유형
Float Float
NUMBER Float
NUMBER(p,s) 10진수(p, s)
LONG Nvarchar
BINARY_FLOAT 실수
BINARY_DOUBLE Float
CHAR Char
VARCHAR2 Varchar
NVARCHAR2 Nvarchar
RAW Varbinary
LONG RAW Varbinary
BLOB Varbinary
Clob Varchar
NCLOB Nvarchar
ROWID Varchar
UROWID Varchar
DATE Datetime2
timestamp Datetime2

형식이 일치하지 않습니다.

Float: Oracle은 SQL Server에서 지원하는 것보다 낮은 126의 부동 소수점 정밀도를 지원합니다(53). 따라서 Float (1-53)을 직접 매핑할 수 있지만 정밀도가 이보다 큰 경우 잘림으로 인해 데이터가 손실될 수 있습니다.

타임스탬프:
Oracle의 현지 표준 시간대가 있는 타임스탬프 및 타임스탬프는 9개의 소수 자릿수 초 정밀도를 지원하는 반면 SQL Server DateTime2는 소수 자릿수 초 정밀도를 7초만 지원합니다.

MongoDB 형식 매핑

BSON 데이터 형식 SQL Server 유형
두 배 Float
문자열 Nvarchar
이진 데이터 Nvarchar
개체 ID입니다. Nvarchar
부울 bit
날짜 Datetime2
32비트 정수 정수
타임스탬프 Nvarchar
64비트 정수 BigInt
10진수 128 소수
DBPointer Nvarchar
JavaScript Nvarchar
최대 키 Nvarchar
최소 키 Nvarchar
기호 Nvarchar
정규식 Nvarchar
Undefined/NULL Nvarchar

MongoDB는 BSON 문서를 사용하여 데이터 레코드를 저장합니다. 이전 시나리오와 달리 BSON은 스키마가 없으며 다른 문서 내에 문서와 배열 포함을 지원합니다. 이렇게 하면 사용자에게 유연성이 제공됩니다.

Teradata 형식 매핑 참조

Teradata 데이터 형식 SQL Server 유형
INTEGER 정수
SMALLINT SmallInt
BIGINT BigInt
BYTEINT SmallInt
DECIMAL Decimal
FLOAT 소수
BYTE 이진
VARBYTE Varbinary
BLOB varbinary
CHAR Nchar
Clob Nvarchar
Varchar Nvarchar
Graphic Nchar
JSON Nvarchar
VARGRAPHIC Nvarchar
DATE 날짜
timestamp Datetime2
TIME Time
TIME WITH TIME ZONE Time
표준 시간대가 있는 타임스탬프 Time

다음 단계

이 항목의 사용 방법에 대한 자세한 내용은 CREATE EXTERNAL TABLE의 Transact-SQL 참조 문서를 참조하세요.