共用方式為


數據類型

適用於:勾選為「是」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 是類型最右邊的欄位。 startFieldendField 的有效值為 0(MONTH)1(YEAR)

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

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

(4)StructType

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