適用於:
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 interval限定詞 | 可使用秒或月為單位來表示時間間隔。 |
| VOID | 表示不具類型的 NULL。 |
| SMALLINT | 表示2字節帶正負號的整數。 |
| STRING | 表示字符串值。 |
| TIMESTAMP | 表示值,包含欄位年、月、日、小時、分鐘和秒的值,以及會話本地時區。 |
| TIMESTAMP_NTZ | 表示值,包含欄位年、月、日、小時、分鐘和秒的值。 執行所有作業,無需考慮任何時區。 |
| TINYINT | 表示1位元的帶正負號的整數。 |
| 地理(srid) | 表示地理值,其座標參考系統是地理(以度為單位的經度和緯度),並由值定義 srid 。 如果 srid 設定為 ANY,座標參考系統就不會在型別中被硬式編碼,而會經由運行時值來決定。 |
| 幾何(srid) | 表示幾何值,其座標參考系統被理解為 Cartesian,並由 srid 值定義。 如果 srid 設定為 ANY,座標參考系統就不會在型別中被硬式編碼,而會經由運行時值來決定。 |
| ARRAY < 元素類型 > | 表示值,其中包含具有 elementType類型的元素序列。 |
| MAP < keyType,valueType > | 表示包含一組鍵值對的值。 |
| STRUCT < [fieldName : fieldType [NOT NULL][COMMENT str][, ...]] > | 表示具有欄位序列所描述結構的值。 |
| VARIANT | 表示半結構化數據。 |
| OBJECT | 表示 VARIANT 中的值,其結構體由欄位集所描述。 |
Important
Delta Lake 不支持 VOID 類型。
數據類型分類
資料類型會分組為下列類別:
整數數值類型
整數數值類型代表整數:
精確數值類型
精確數值類型代表十進位數字:
二進位浮點類型
二進位浮點類型使用指數和二進位表示法來涵蓋大量的數位:
數值類型
數值類型代表所有數值資料類型:
日期-時間類型
日期時間類型代表日期和時間元件:
地理空間類型
地理空間類型代表幾何或地理物件:
簡單類型
簡單類型是藉由持有單一值所定義的類型:
複雜類型
複雜型態由多個複雜 型或簡單型的組成部分組成:
語言映射
適用於:
Databricks Runtime
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 | 布林值 | BooleanType |
| TIMESTAMP | TimestampType | java.sql.Timestamp | TimestampType |
| TIMESTAMP_NTZ | TimestampNTZType | java.time.LocalDateTime | TimestampNTZType |
| DATE | DateType | java.sql.Date | DateType |
| 年-月間隔 | YearMonthIntervalType | java.time.Period | 年月區間類型 (3) |
| 日間時間間隔 | DayTimeIntervalType | java.time.Duration | 日間時間間隔類型 (3) |
| 地理(srid) | 地理類型 | org.apache.spark.unsafe.type.GeographyVal | 地理類型 |
| 幾何(srid) | GeometryType | org.apache.spark.unsafe.type.GeometryVal | GeometryType |
| ARRAY | ArrayType | scala.collection.Seq | ArrayType(elementType [, containsNull])。 (2) |
| MAP | MapType | scala.collection.Map | MapType(keyType,valueType [,valueContainsNull]) (2) |
| STRUCT | StructType | org.apache.spark.sql.Row | StructType(fields). fields 是一個 StructField 的序列。 4. |
| StructField | 此欄位資料類型的實值型別(例如,StructField 的 Int 資料類型為 IntegerType) | StructField(name, dataType [, 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提供的 Factory 方法。
| SQL 類型 | 數據類型 | 值類型 | 用來存取或建立數據類型的 API |
|---|---|---|---|
| TINYINT | ByteType | 字節或位元組 | DataTypes.ByteType |
| SMALLINT | ShortType | 「short」或「Short」 | DataTypes.ShortType |
| INT | IntegerType | int 或 Integer | DataTypes.IntegerType |
| BIGINT | LongType | 長時間或 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 | 布林或布爾值 | 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 | DayTimeInterval類型 (3) |
| 地理(srid) | 地理類型 | org.apache.spark.unsafe.type.GeographyVal | 地理類型 |
| 幾何(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). fields 是 StructField 的清單或陣列。 4 |
| StructField | 此欄位資料類型的實值型別(例如,StructField 的 int 資料類型為 IntegerType) | 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 | 整數或長整數 | IntegerType() |
| BIGINT | LongType | 長 (1) | LongType() |
| FLOAT | FloatType | 浮點數 (1) | FloatType() |
| DOUBLE | DoubleType | float | DoubleType() |
| DECIMAL(p,s) | DecimalType | decimal.Decimal | DecimalType() |
| STRING | StringType | 字串 | 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 | DayTimeInterval類型 (3) |
| 地理(srid) | 地理類型 | 地理Val | 地理類型() |
| 幾何(srid) | GeometryType | 幾何學Val | 幾何類型() |
| ARRAY | ArrayType | list、tuple 或 array | ArrayType(elementType, [containsNull])。(2) |
| MAP | MapType | dict | MapType(keyType, valueType, [valueContainsNull])。(2) |
| STRUCT | StructType | list 或 Tuple | StructType(fields). field 是 StructField 的 Seq。 (4) |
| StructField | 此欄位資料類型的實值型別 (例如,StructField 的 Int 資料類型為 IntegerType) | StructField(name, dataType, [nullable])。(4) | |
| VARIANT | VariantType | VariantVal | VariantType() |
| OBJECT | 不支援 | 不支援 | 不支援 |
R
| SQL 類型 | 數據類型 | 值類型 | 用來存取或建立數據類型的 API |
|---|---|---|---|
| TINYINT | ByteType | 整數 (1) | 'byte' |
| SMALLINT | ShortType | 整數 (1) | 'short' |
| INT | IntegerType | 整數 | 'integer' |
| BIGINT | LongType | 整數 (1) | 'long' |
| FLOAT | FloatType | 數字 (1) | 'float' |
| DOUBLE | DoubleType | numeric | 'double' |
| DECIMAL(p,s) | DecimalType | 不支援 | 不支援 |
| STRING | StringType | 字元 | '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 | 不支援 | 不支援 |
| 地理(srid) | 不支援 | 不支援 | 不支援 |
| 幾何(srid) | 不支援 | 不支援 | 不支援 |
| ARRAY | ArrayType | 向量或清單 | list(type='array', elementType=elementType, containsNull=[containsNull])。(2) |
| MAP | MapType | 環境 | list(type='map', keyType=keyType, valueType=valueType, valueContainsNull=[valueContainsNull])。(2) |
| STRUCT | StructType | 命名名單 | list(type='struct',fields=fields)。 fields 是一個 StructField 的序列。 (4) |
| StructField | 此欄位資料類型的實值型別(例如,StructField 的整數資料類型為 IntegerType) | list(name=name, type=dataType, nullable=[nullable])。(4) | |
| VARIANT | 不支援 | 不支援 | 不支援 |
| OBJECT | 不支援 | 不支援 | 不支援 |
(1) 數字在執行時轉換為該領域。 請確定數字在範圍內。
(2) 可選值預設為 TRUE。
(3) 音程類型
YearMonthIntervalType([startField,] endField):表示由下列欄位連續子集所組成的年月間隔: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值。 這是預設值。