適用於:Databricks SQL
Databricks Runtime
如需管理數據類型之間衝突解決方式的規則,請參閱 SQL 數據類型規則。
支援的資料類型
Azure Databricks 支援下列數據類型:
資料類型 | 描述 |
---|---|
BIGINT | 表示8位元組帶正負號的整數。 |
二元 | 表示位元組序列值。 |
布林 | 表示布爾值。 |
日期 | 表示值,包含欄位年、月和日的值,不含時區。 |
DECIMAL(p,s) | 代表具有最大精度p 和固定比例尺s 的數字。 |
雙倍 | 表示8位元組雙精度浮點數。 |
浮動 | 表示 4 位元組單精度浮點數。 |
INT | 表示 4 位元組帶正負號的整數。 |
INTERVAL intervalQualifier | 可使用秒或月為單位來表示時間間隔。 |
無效 | 表示不具類型的 NULL。 |
SMALLINT | 表示2字節帶正負號的整數。 |
字串 | 表示字符串值。 |
時間戳 | 表示值,包含欄位年、月、日、小時、分鐘和秒的值,以及會話本地時區。 |
TIMESTAMP_NTZ | 表示值,包含欄位年、月、日、小時、分鐘和秒的值。 執行所有作業,無需考慮任何時區。 |
TINYINT(小整數類型) | 表示1位元的帶正負號的整數。 |
ARRAY < elementType > | 表示值,其中包含具有 elementType 類型的元素序列。 |
MAP < keyType,valueType > | 表示包含一組鍵值對的值。 |
STRUCT < [fieldName : fieldType [NOT NULL][COMMENT str][, ...]] > | 表示具有欄位序列所描述結構的值。 |
變體 | 表示半結構化數據。 |
物件 | 表示 VARIANT 中的值,其結構體由欄位集所描述。 |
重要
Delta Lake 不支持 VOID
類型。
數據類型分類
資料類型會分組為下列類別:
- 日期時間 類型代表日期和時間元件:
語言對應
適用於: Databricks Runtime
程式語言 Scala
Spark SQL 資料類型定義於封裝 org.apache.spark.sql.types
中。 您可以匯入套件來存取這些內容:
import org.apache.spark.sql.types._
SQL 類型 | 資料類型 | 值類型 | 用來存取或建立數據類型的 API |
---|---|---|---|
TINYINT(小整數類型) | 字節類型 | 位元 | 字節類型 |
SMALLINT | ShortType | 短 | ShortType |
INT | 整數類型 | int | 整數類型 |
BIGINT | LongType | 長 | LongType |
浮動 | 浮點類型 | 浮動 | 浮點類型 |
雙倍 | DoubleType | 雙重 | DoubleType |
DECIMAL(p,s) | 十進制類型 | java.math.BigDecimal | 十進制類型 |
字串 | 字串類型 | 繩子 | 字串類型 |
二元 | 二進制類型 | 陣列[Byte] | 二進制類型 |
布林 | BooleanType | 布林值 | BooleanType |
時間戳 | 時間戳記類型 | java.sql.Timestamp | 時間戳記類型 |
TIMESTAMP_NTZ | TimestampNTZ類型 | java.time.LocalDateTime | TimestampNTZ類型 |
日期 | 日期類型 | java.sql.Date | 日期類型 |
年-月區間 | 年月區間類型 | java.time.Period | YearMonthIntervalType (3) |
日間時段 | 日間時間間隔類型 | java.time.Duration | DayTimeIntervalType (3) |
陣列 | 陣列類型 | scala.collection.Seq | ArrayType(elementType [, containsNull])。 (2) |
地圖 | 地圖類型 | scala.collection.Map | MapType(keyType,valueType [,valueContainsNull]) (2) |
結構 | 結構類型 | org.apache.spark.sql.Row | StructType(fields)。 fields 是一個 StructField 的序列。 4. |
StructField | 此欄位資料類型的實值型別(例如,StructField 的 Int 資料類型為 IntegerType) | StructField(name, dataType [, nullable])。 4 | |
變體 | 變體類型 | org.apache.spark.unsafe.type.VariantVal | 變體類型 |
物件 | 不支援 | 不支援 | 不支援 |
爪哇島
Spark SQL 資料類型定義於封裝 org.apache.spark.sql.types
中。 若要存取或建立數據類型,請使用 中 org.apache.spark.sql.types.DataTypes
提供的 Factory 方法。
SQL 類型 | 資料類型 | 值類型 | 用來存取或建立數據類型的 API |
---|---|---|---|
TINYINT(小整數類型) | 字節類型 | 字節或位元組 | DataTypes.ByteType |
SMALLINT | ShortType | 「short」或「Short」 | 資料類型.ShortType |
INT | 整數類型 | int 或 Integer | DataTypes.IntegerType(資料類型:整數) |
BIGINT | LongType | 長時間或 Long | 資料類型.LongType |
浮動 | 浮點類型 | float 或 Float | 資料型態.DataTypes.FloatType |
雙倍 | DoubleType | double 或 Double | DataTypes.DoubleType |
DECIMAL(p,s) | 十進制類型 | java.math.BigDecimal | DataTypes.createDecimalType() DataTypes.createDecimalType(precision, scale)。 |
字串 | 字串類型 | 繩子 | DataTypes.StringType (資料類型.字串類型) |
二元 | 二進制類型 | byte[] | 資料類型.二進位類型 |
布林 | BooleanType | 布林或布爾值 | 資料類型.BooleanType |
時間戳 | 時間戳記類型 | java.sql.Timestamp | 資料類型.時間戳記類型 |
TIMESTAMP_NTZ | TimestampNTZ類型 | java.time.LocalDateTime | DataTypes.TimestampNTZType |
日期 | 日期類型 | java.sql.Date | 資料類型.Date型別 |
年-月區間 | 年月區間類型 | java.time.Period | YearMonthIntervalType (3) |
日間時段 | 日間時間間隔類型 | java.time.Duration | DayTimeIntervalType (3) |
陣列 | 陣列類型 | ava.util.List | DataTypes.createArrayType(elementType [, containsNull])。(2) |
地圖 | 地圖類型 | java.util.Map | DataTypes.createMapType(keyType,valueType [,valueContainsNull])。(2) |
結構 | 結構類型 | org.apache.spark.sql.Row | DataTypes.createStructType(fields)。 fields 是 StructField 的清單或陣列。 4 |
StructField | 此欄位資料類型的實值型別(例如,StructField 的 int 資料類型為 IntegerType) | DataTypes.createStructField(name, dataType, nullable) 4 | |
變體 | 變體類型 | org.apache.spark.unsafe.type.VariantVal | 變體類型 |
物件 | 不支援 | 不支援 | 不支援 |
Python(程式語言)
Spark SQL 資料類型定義於封裝 pyspark.sql.types
中。 您可以匯入套件來存取這些內容:
from pyspark.sql.types import *
SQL 類型 | 資料類型 | 值類型 | 用來存取或建立數據類型的 API |
---|---|---|---|
TINYINT(小整數類型) | 字節類型 | int 或 long。 (1) | ByteType() |
SMALLINT | ShortType | int 或 long。 (1) | ShortType() |
INT | 整數類型 | 整數或長整數 | IntegerType() |
BIGINT | LongType | long (1) | LongType() |
浮動 | 浮點類型 | float (1) | FloatType() |
雙倍 | DoubleType | 浮動 | DoubleType() |
DECIMAL(p,s) | 十進制類型 | 十進位。十進位 | DecimalType() |
字串 | 字串類型 | 字串 | StringType() |
二元 | 二進制類型 | bytearray(位元組陣列) | BinaryType() |
布林 | BooleanType | 布爾 (bool) | 布林值類型() |
時間戳 | 時間戳記類型 | datetime.datetime(日期時間) | TimestampType() |
TIMESTAMP_NTZ | TimestampNTZ類型 | datetime.datetime | TimestampNTZType() |
日期 | 日期類型 | datetime.date | DateType() |
年-月區間 | 年月區間類型 | 不支援 | 不支援 |
日間時段 | 日間時間間隔類型 | datetime.timedelta | DayTimeIntervalType (3) |
陣列 | 陣列類型 | list、tuple 或 array | ArrayType(elementType,[containsNull])。(2) |
地圖 | 地圖類型 | dict | MapType(keyType,valueType,[valueContainsNull])。(2) |
結構 | 結構類型 | list 或 Tuple | StructType(fields)。 field 是 StructField 的 Seq。 (4) |
StructField | 此欄位資料類型的實值型別 (例如,StructField 的 Int 資料類型為 IntegerType) | StructField(name, dataType, [nullable])。(4) | |
變體 | 變體類型 | VariantVal | VariantType() |
物件 | 不支援 | 不支援 | 不支援 |
R
SQL 類型 | 資料類型 | 值類型 | 用來存取或建立數據類型的 API |
---|---|---|---|
TINYINT(小整數類型) | 字節類型 | 整數 (1) | 位元組 (byte) |
SMALLINT | ShortType | 整數 (1) | 短 |
INT | 整數類型 | 整數 | 整數 |
BIGINT | LongType | 整數 (1) | 長 |
浮動 | 浮點類型 | numeric (1) | 漂浮 |
雙倍 | DoubleType | 數字的 | 雙倍 |
DECIMAL(p,s) | 十進制類型 | 不支援 | 不支援 |
字串 | 字串類型 | 字符 | 字串 |
二元 | 二進制類型 | 原始 | 二進位 |
布林 | BooleanType | 邏輯的 | 'bool' |
時間戳 | 時間戳記類型 | POSIXct | 時間戳記 |
TIMESTAMP_NTZ | TimestampNTZ類型 | datetime.datetime | TimestampNTZType() |
日期 | 日期類型 | 日期 | 日期 |
年-月區間 | 年月區間類型 | 不支援 | 不支援 |
日間時段 | 日間時間間隔類型 | 不支援 | 不支援 |
陣列 | 陣列類型 | 向量或清單 | list(type='array', elementType=elementType, containsNull=[containsNull])。(2) |
地圖 | 地圖類型 | 環境 | list{type='map', keyType=keyType, valueType=valueType, valueContainsNull=[valueContainsNull]}。(2) |
結構 | 結構類型 | 具名清單 | list(type='struct', fields=fields)。 fields 是一個 StructField 的序列。 (4) |
StructField | 此欄位資料類型的實值型別(例如,StructField 的整數資料類型為 IntegerType) | list(name=name, type=dataType, nullable=[nullable])。(4) | |
變體 | 不支援 | 不支援 | 不支援 |
物件 | 不支援 | 不支援 | 不支援 |
(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
值。 這是預設值。