적용 대상:
Databricks SQL
Databricks Runtime
데이터 형식 간의 충돌을 해결하는 방법을 제어하는 규칙은 SQL 데이터 형식 규칙을 참조하세요.
지원되는 데이터 유형
Azure Databricks는 다음 데이터 형식을 지원합니다.
| 데이터 형식 | Description |
|---|---|
| BIGINT | 8바이트 부호 있는 정수를 나타냅니다. |
| BINARY | 바이트 시퀀스 값을 나타냅니다. |
| BOOLEAN | 부울 값을 나타냅니다. |
| DATE | 표준 시간대가 없는 연도, 월 및 일 필드의 값으로 구성된 값을 나타냅니다. |
| DECIMAL(p,s) | 최대 정밀도 p 및 고정 눈금 s가 있는 숫자를 나타냅니다. |
| DOUBLE | 8바이트 배정밀도 부동 소수점 숫자를 나타냅니다. |
| FLOAT | 4바이트 단정밀도 부동 소수점 숫자를 나타냅니다. |
| INT | 4바이트 부호 있는 정수를 나타냅니다. |
| INTERVAL 간격한정자(intervalQualifier) | 시간 간격(초 또는 월)을 나타냅니다. |
| VOID | 형식화되지 않은 NULL을 나타냅니다. |
| SMALLINT | 2바이트 부호 있는 정수를 나타냅니다. |
| STRING | 문자열 값을 나타냅니다. |
| TIMESTAMP | 세션 현지 표준 시간대가 있는 연도, 월, 일, 시간, 분 및 초 필드의 값으로 구성된 값을 나타냅니다. |
| TIMESTAMP_NTZ | 필드 연도, 월, 일, 시간, 분 및 초의 값으로 구성된 값을 나타냅니다. 모든 작업은 표준 시간대를 고려하지 않고 수행됩니다. |
| TINYINT | 1바이트 부호 있는 정수를 나타냅니다. |
| GEOGRAPHY(srid) | 좌표 참조 시스템이 지리적(경도 및 위도)이고 값으로 srid 정의된 지리 값을 나타냅니다. 좌표 참조 시스템으로 설정된 srid 경우 ANY 형식에서 하드 코딩되지 않고 런타임 값이 됩니다. |
| GEOMETRY(srid) | 좌표 참조 시스템이 Cartesian으로 인식되고 srid 값으로 정의된 기하학적 값을 나타냅니다. 좌표 참조 시스템으로 설정된 srid 경우 ANY 형식에서 하드 코딩되지 않고 런타임 값이 됩니다. |
| ARRAY < elementType > | 형식 elementType가 있는 요소 시퀀스로 구성된 값을 나타냅니다. |
| MAP < keyType,valueType > | 키-값 쌍 세트로 구성된 값을 나타냅니다. |
| STRUCT < [필드명 : 필드 타입 [NOT NULL][COMMENT 문자열][, ...]] > | 필드 시퀀스로 설명된 구조체의 값을 나타냅니다. |
| VARIANT | 반구조화된 데이터를 나타냅니다. |
| OBJECT | 필드 집합에서 VARIANT 설명하는 구조체가 있는 값을 나타냅니다. |
Important
Delta Lake는 형식을 VOID 지원하지 않습니다.
데이터 형식 분류
데이터 유형은 다음 클래스로 그룹화됩니다.
정수 숫자 형식
정수형 숫자는 정수를 설명합니다.
정확한 숫자 형식
정확한 숫자 형식은 base-10 숫자를 나타냅니다.
이진 부동 소수점 형식
이진 부동 소수점 형식은 지수 및 이진 표현을 사용하여 다양한 숫자를 처리합니다.
숫자 형식
숫자 형식은 모든 숫자 데이터 형식을 나타냅니다.
날짜-시간 형식
날짜-시간 형식은 날짜 및 시간 구성 요소를 나타냅니다.
지리 공간적 형식
지리 공간적 형식은 기하학적 개체 또는 지리적 개체를 나타냅니다.
단순 형식
단순 형식은 단일 값을 보유하여 정의된 형식입니다.
복합 형식
복합 형식은 복합 또는 단순 형식의 여러 구성 요소로 구성됩니다.
언어 매핑
적용 대상:
Databricks 런타임
Scala
Spark SQL 데이터 형식은 org.apache.spark.sql.types 패키지에 정의됩니다. 패키지를 가져와서 액세스합니다.
import org.apache.spark.sql.types._
| SQL 형식 | 데이터 형식 | 값 유형 | 데이터 형식에 액세스하거나 만들기 위한 API |
|---|---|---|---|
| TINYINT | ByteType | Byte | ByteType |
| SMALLINT | ShortType | Short | ShortType |
| INT | IntegerType | Int | IntegerType |
| BIGINT | LongType | Long | LongType |
| FLOAT | FloatType | Float | FloatType |
| DOUBLE | DoubleType | Double | DoubleType |
| DECIMAL(p,s) | DecimalType | java.math.BigDecimal | DecimalType |
| STRING | StringType | String | StringType |
| BINARY | BinaryType | Array[Byte] | BinaryType |
| BOOLEAN | BooleanType | Boolean | BooleanType |
| TIMESTAMP | TimestampType | java.sql.Timestamp | TimestampType |
| TIMESTAMP_NTZ | TimestampNTZType | java.time.LocalDateTime | TimestampNTZType |
| DATE | DateType | java.sql.Date | DateType |
| 연도-월 간격 | YearMonthIntervalType | java.time.Period | YearMonthIntervalType (3) |
| 일 시간 간격 | DayTimeIntervalType | java.time.Duration | 하루시간간격유형 (3) |
| GEOGRAPHY(srid) | GeographyType | org.apache.spark.unsafe.type.GeographyVal | 지리유형 |
| GEOMETRY(srid) | GeometryType | org.apache.spark.unsafe.type.GeometryVal | GeometryType |
| ARRAY | ArrayType | scala.collection.Seq | 배열타입(요소 타입 [, null 포함 여부]) (2) |
| MAP | MapType | scala.collection.Map | MapType(keyType, valueType [, valueContainsNull]). (2) |
| STRUCT | StructType | org.apache.spark.sql.Row | StructType(fields). 필드는 StructField의 Seq입니다. 4. |
| StructField | 이 필드의 데이터 형식의 값 형식(예: IntegerType 데이터 형식이 있는 StructField의 경우 Int) | StructField(이름, 데이터 유형 [, nullable]). 4 | |
| VARIANT | VariantType | org.apache.spark.unsafe.type.VariantVal | VariantType |
| OBJECT | 지원되지 않음 | 지원되지 않음 | 지원되지 않음 |
Java
Spark SQL 데이터 형식은 org.apache.spark.sql.types 패키지에 정의됩니다. 데이터 형식에 액세스하거나 만들려면 org.apache.spark.sql.types.DataTypes에 제공된 팩터리 메서드를 사용합니다.
| SQL 형식 | 데이터 형식 | 값 유형 | 데이터 형식에 액세스하거나 만들기 위한 API |
|---|---|---|---|
| TINYINT | ByteType | byte 또는 Byte | DataTypes.ByteType |
| SMALLINT | ShortType | short 또는 Short | DataTypes.ShortType |
| INT | IntegerType | int 또는 Integer | DataTypes.IntegerType |
| BIGINT | LongType | long 또는 Long | DataTypes.LongType |
| FLOAT | FloatType | float 또는 Float | DataTypes.FloatType |
| DOUBLE | DoubleType | double 또는 Double | DataTypes.DoubleType |
| DECIMAL(p,s) | DecimalType | java.math.BigDecimal | DataTypes.createDecimalType() DataTypes.createDecimalType(precision, scale) (정밀도와 스케일 매개변수를 사용하여 소수 유형을 생성합니다). |
| STRING | StringType | String | DataTypes.StringType |
| BINARY | BinaryType | byte[] | DataTypes.BinaryType |
| BOOLEAN | BooleanType | boolean 또는 Boolean | DataTypes.BooleanType |
| TIMESTAMP | TimestampType | java.sql.Timestamp | DataTypes.TimestampType |
| TIMESTAMP_NTZ | TimestampNTZType | java.time.LocalDateTime | DataTypes.TimestampNTZType |
| DATE | DateType | java.sql.Date | DataTypes.DateType |
| 연도-월 간격 | YearMonthIntervalType | java.time.Period | 연월간격유형 (3) |
| 일 시간 간격 | DayTimeIntervalType | java.time.Duration | DayTimeIntervalType (3) |
| GEOGRAPHY(srid) | 지리 유형 | org.apache.spark.unsafe.type.GeographyVal | 지리 유형 |
| GEOMETRY(srid) | GeometryType | org.apache.spark.unsafe.type.GeometryVal | GeometryType |
| ARRAY | ArrayType | ava.util.List | DataTypes.createArrayType(elementType [, containsNull]). (2) |
| MAP | MapType | java.util.Map | DataTypes.createMapType(keyType, valueType [, valueContainsNull]). (2) |
| STRUCT | StructType | org.apache.spark.sql.Row | DataTypes.createStructType(fields). 필드는 StructField의 목록 또는 배열입니다. 4 |
| StructField | 이 필드의 데이터 형식의 값 형식(예: IntegerType 데이터 형식의 StructField의 경우 Int) | DataTypes.createStructField(name, dataType, nullable) 4 | |
| VARIANT | VariantType | org.apache.spark.unsafe.type.VariantVal | VariantType |
| OBJECT | 지원되지 않음 | 지원되지 않음 | 지원되지 않음 |
Python
Spark SQL 데이터 형식은 pyspark.sql.types 패키지에 정의됩니다. 패키지를 가져와서 액세스합니다.
from pyspark.sql.types import *
| SQL 형식 | 데이터 형식 | 값 유형 | 데이터 형식에 액세스하거나 만들기 위한 API |
|---|---|---|---|
| TINYINT | ByteType | int 또는 long (1) | ByteType() |
| SMALLINT | ShortType | int 또는 long (1) | ShortType() |
| INT | IntegerType | int 또는 long | IntegerType() |
| BIGINT | LongType | long (1) | LongType() |
| FLOAT | FloatType | float (1) | FloatType() |
| DOUBLE | DoubleType | float | DoubleType() |
| DECIMAL(p,s) | DecimalType | decimal.Decimal | DecimalType() |
| STRING | StringType | string | StringType() |
| BINARY | BinaryType | bytearray | BinaryType() |
| BOOLEAN | BooleanType | bool | BooleanType() |
| TIMESTAMP | TimestampType | datetime.datetime | TimestampType() |
| TIMESTAMP_NTZ | TimestampNTZType | datetime.datetime | TimestampNTZType() |
| DATE | DateType | datetime.date | DateType() |
| 연도-월 간격 | YearMonthIntervalType | 지원되지 않음 | 지원되지 않음 |
| 일 시간 간격 | DayTimeIntervalType | datetime.timedelta | DayTimeIntervalType (3) |
| GEOGRAPHY(srid) | 지리 유형 | GeographyVal | GeographyType() |
| GEOMETRY(srid) | GeometryType | GeometryVal | GeometryType() |
| ARRAY | ArrayType | list, tuple 또는 array | ArrayType(elementType, [containsNull]). (2) |
| MAP | MapType | dict | MapType(keyType, valueType, [valueContainsNull]). (2) |
| STRUCT | StructType | list, tuple, 또는 array | StructType(fields). 필드는 StructField의 Seq입니다. (4) |
| StructField | 이 필드의 데이터 형식의 값 형식(예: IntegerType 데이터 형식의 StructField의 경우 Int) | StructField(name, dataType, [nullable]). (4) | |
| VARIANT | VariantType | VariantVal | VariantType() |
| OBJECT | 지원되지 않음 | 지원되지 않음 | 지원되지 않음 |
R
| SQL 형식 | 데이터 형식 | 값 유형 | 데이터 형식에 액세스하거나 만들기 위한 API |
|---|---|---|---|
| TINYINT | ByteType | 정수 (1) | 'byte' |
| SMALLINT | ShortType | 정수 (1) | 'short' |
| INT | IntegerType | integer | 'integer' |
| BIGINT | LongType | 정수 (1) | 'long' |
| FLOAT | FloatType | 숫자 (1) | 'float' |
| DOUBLE | DoubleType | numeric | 'double' |
| DECIMAL(p,s) | DecimalType | 지원되지 않음 | 지원되지 않음 |
| STRING | StringType | character | 'string' |
| BINARY | BinaryType | raw | 'binary' |
| BOOLEAN | BooleanType | logical | 'bool' |
| TIMESTAMP | TimestampType | POSIXct | 'timestamp' |
| TIMESTAMP_NTZ | TimestampNTZType | datetime.datetime | TimestampNTZType() |
| DATE | DateType | Date | 'date' |
| 연도-월 간격 | YearMonthIntervalType | 지원되지 않음 | 지원되지 않음 |
| 일 시간 간격 | DayTimeIntervalType | 지원되지 않음 | 지원되지 않음 |
| GEOGRAPHY(srid) | 지원되지 않음 | 지원되지 않음 | 지원되지 않음 |
| GEOMETRY(srid) | 지원되지 않음 | 지원되지 않음 | 지원되지 않음 |
| ARRAY | ArrayType | 벡터 또는 목록 | list(type='array', elementType=elementType, containsNull=[containsNull]). (2) |
| MAP | MapType | environment | list(type='map', keyType=keyType, valueType=valueType, valueContainsNull=[valueContainsNull]). (2) |
| STRUCT | StructType | 이름이 지정된 목록 | list(type='구조체', fields=fields). 필드는 StructField의 Seq입니다. (4) |
| StructField | 이 필드의 데이터 형식의 값 형식(예: IntegerType 데이터 형식의 StructField의 경우 integer) | list(name=name, type=dataType, nullable=[nullable]). (4) | |
| VARIANT | 지원되지 않음 | 지원되지 않음 | 지원되지 않음 |
| OBJECT | 지원되지 않음 | 지원되지 않음 | 지원되지 않음 |
(1) 숫자는 런타임에 도메인으로 변환됩니다. 숫자가 범위 내에 있는지 확인합니다.
(2) 선택적 값은 기본값입니다 TRUE.
(3) 간격 유형
YearMonthIntervalType([startField,] endField): 다음 필드의 연속 하위 집합으로 구성된 1년 간격을 나타냅니다.startField는 가장 왼쪽 필드이며endField형식의 가장 오른쪽 필드입니다.startField및endField의 유효한 값은0(MONTH)및1(YEAR)입니다.DayTimeIntervalType([startField,] endField): 다음 필드의 연속 하위 집합으로 구성된 일-시간을 나타냅니다.startField는 가장 왼쪽 필드이며endField형식의 가장 오른쪽 필드입니다.startField및endField의 유효한 값은0(DAY),1(HOUR),2(MINUTE),3(SECOND)입니다.
(4)StructType
-
StructType(fields)은(는)StructField의 시퀀스, 목록 또는 배열로 설명된 구조체의 값을 나타냅니다. 두 필드의 이름이 같아서는 안 됩니다. -
StructField(name, dataType, nullable)은(는)StructType의 필드를 나타냅니다. 필드 이름은name으로 표시됩니다. 필드의 데이터 형식은 dataType으로 표시됩니다.nullable은 해당 필드의 값이null값을 가질 수 있는지 여부를 나타냅니다. 기본값입니다.