資料類型

適用於:檢查標示為是 Databricks SQL 檢查標示為是 Databricks Runtime

如需管理數據類型之間衝突解決方式的規則,請參閱 SQL 數據類型規則

支援的資料類型

Azure Databricks 支援下列數據類型:

資料類型 描述
BIGINT 表示8位元組帶正負號的整數。
二進位 表示位元組序列值。
布爾 表示布爾值。
DATE 表示值,包含欄位年、月和日的值,不含時區。
DECIMAL(p,s) 表示最大有效位數 p 和固定小數位數 s的數位。
DOUBLE 表示8位元組雙精確度浮點數。
FLOAT 表示 4 位元組單精度浮點數。
INT 表示 4 位元組帶正負號的整數。
INTERVAL intervalQualifier 表示以秒或月數的刻度表示時間間隔。
VOID 表示不具類型的 NULL。
SMALLINT 表示2位元組帶正負號的整數。
字串 表示字元字串值。
TIMESTAMP 表示值,包含欄位年、月、日、小時、分鐘和秒的值,以及會話本地時區。
TIMESTAMP_NTZ 表示值,包含欄位年、月、日、小時、分鐘和秒的值。 所有作業都會執行,而不需要考慮任何時區。
TINYINT 表示1位元組帶正負號的整數。
ARRAY <elementType> 表示值,包含具有 型別 elementType的項目序列。
MAP < keyType,valueType > 表示包含一組索引鍵/值組的值。
STRUCT < [fieldName : fieldType [NOT NULL][COMMENT str][, ...]] > 表示具有欄位序列所描述結構的值。

重要

Delta Lake 不支援 VOIDINTERVAL 類型。

數據類型分類

資料類型會分組為下列類別:

語言對應

適用於:檢查標示為是 Databricks Runtime

Scala

Spark SQL 資料類型定義於封裝 org.apache.spark.sql.types中。 您可以匯入套件來存取它們:

import org.apache.spark.sql.types._
SQL 類型 資料類型 值類型 用來存取或建立數據類型的 API
TINYINT ByteType 位元組 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
字串 StringType String StringType
二進位 BinaryType Array[Byte] BinaryType
布爾 BooleanType 布林值 BooleanType
TIMESTAMP TimestampType java.sql.Timestamp TimestampType
TIMESTAMP_NTZ TimestampNTZType java.time.LocalDateTime TimestampNTZType
DATE DateType java.sql.Date DateType
year-month interval YearMonthIntervalType java.time.Period YearMonthIntervalType (3)
day-time interval DayTimeIntervalType java.time.Duration DayTimeIntervalType (3)
陣 列 ArrayType scala.collection.Seq ArrayType(elementType [, containsNull])。 (2)
地圖 MapType scala.collection.Map MapType(keyType, valueType [, valueContainsNull])。 (2)
結構 StructType org.apache.spark.sql.Row StructType(fields)。 fields 是 StructField 的 Seq。 4.
StructField 此欄位資料類型的實值型別(例如,StructField 的 Int 資料類型為 IntegerType) StructField(name, dataType [, nullable])。 4

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 或 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)。
字串 StringType String DataTypes.StringType
二進位 BinaryType byte[] DataTypes.BinaryType
布爾 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
year-month interval YearMonthIntervalType java.time.Period YearMonthIntervalType (3)
day-time interval DayTimeIntervalType java.time.Duration DayTimeIntervalType (3)
陣 列 ArrayType ava.util.List DataTypes.createArrayType(elementType [, containsNull])。(2)
地圖 MapType java.util.Map DataTypes.createMapType(keyType, valueType [, valueContainsNull])。(2)
結構 StructType org.apache.spark.sql.Row DataTypes.createStructType(fields)。 fields 是 StructField 的清單或陣列。 4
StructField 此欄位資料類型的實值型別(例如,StructField 的 int 資料類型為 IntegerType) DataTypes.createStructField(name, dataType, nullable) 4

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 十進位。十進位 DecimalType()
字串 StringType 字串 StringType()
二進位 BinaryType bytearray BinaryType()
布爾 BooleanType bool 布林值類型()
TIMESTAMP TimestampType datetime.datetime TimestampType()
TIMESTAMP_NTZ TimestampNTZType datetime.datetime TimestampNTZType()
DATE DateType datetime.date DateType()
year-month interval YearMonthIntervalType 不支援 不支援
day-time interval DayTimeIntervalType datetime.timedelta DayTimeIntervalType (3)
陣 列 ArrayType list、Tuple 或 array ArrayType(elementType,[containsNull])。(2)
地圖 MapType dict MapType(keyType,valueType,[valueContainsNull])。(2)
結構 StructType list 或 Tuple StructType(fields)。 field 是 StructField 的 Seq。 (4)
StructField 此欄位資料類型的實值型別 (例如,StructField 的 Int 資料類型為 IntegerType) StructField(name, dataType, [nullable]]。(4)

R

SQL 類型 資料類型 值類型 用來存取或建立數據類型的 API
TINYINT ByteType 整數 (1) 'byte'
SMALLINT ShortType 整數 (1) 'short'
INT IntegerType 整數 'integer'
BIGINT LongType 整數 (1) 'long'
FLOAT FloatType numeric (1) 'float'
DOUBLE DoubleType numeric 'double'
DECIMAL(p,s) DecimalType 不支援 不支援
字串 StringType character 'string'
二進位 BinaryType raw 'binary'
布爾 BooleanType logical 'bool'
TIMESTAMP TimestampType POSIXct 'timestamp'
TIMESTAMP_NTZ TimestampNTZType datetime.datetime TimestampNTZType()
DATE DateType Date 'date'
year-month interval YearMonthIntervalType 不支援 不支援
day-time interval DayTimeIntervalType 不支援 不支援
陣 列 ArrayType 向量或清單 list(type='array', elementType=elementType, containsNull=[containsNull])。(2)
地圖 MapType environment list(type='map', keyType=keyType, valueType=valueType, valueContainsNull=[valueContainsNull])。(2)
結構 StructType 具名清單 list(type='struct', fields=fields)。 fields 是 StructField 的 Seq。 (4)
StructField 此欄位資料類型的實值型別(例如,StructField 的整數資料類型為 IntegerType) list(name=name, type=dataType, nullable=[nullable])。(4)

(1) 數位會在運行時間轉換成網域。 請確定數位在範圍內。

(2) 選擇性值預設為 TRUE

(3) 間隔類型

  • YearMonthIntervalType([startField,] endField):表示由下列欄位連續子集所組成的年月間隔:

    startField 是最左邊的欄位,而 endField 是類型最右邊的欄位。 與 endField0(MONTH) 有效值為 startField1(YEAR)

  • DayTimeIntervalType([startField,] endField):表示由下列欄位連續子集所組成的日時間間隔:

    startField 是最左邊的欄位,而 endField 是類型最右邊的欄位。 和 endField 的有效值為 startField 、、1(HOUR)2(MINUTE)3(SECOND)0(DAY)

(4)StructType

  • StructType(fields) 表示具有序列、清單或 StructFields 陣列所描述之結構的值(欄位)。 不允許有兩個具有相同名稱的欄位。
  • StructField(name, dataType, nullable) 表示中的 StructType欄位。 功能變數名稱會以 name表示。 欄位的數據類型會以 dataType 表示。 nullable 指出這些欄位的值是否可以有 null 值。 這是預設值。