Freigeben über


Datentypen

Gilt für:mit Häkchen markiert: Ja Databricks SQL mit Häkchen markiert: Ja Databricks Runtime

Regeln zur Lösung von Konflikten zwischen Datentypen finden Sie unter SQL-Datentypregeln.

Unterstützte Datentypen

Azure Databricks unterstützt folgende Datentypen:

Datentyp Description
BIGINT Stellt 8-Byte-Ganzzahlen mit Vorzeichen dar.
BINARY Stellt Bytesequenzwerte dar.
BOOLEAN Stellt boolesche Werte dar.
DATE Stellt Werte dar, die sich aus Feldern für Jahr, Monat und Tag ohne Zeitzone zusammensetzen.
DECIMAL(p,s) Stellt Zahlen mit maximaler Genauigkeit p und fester Skala s dar.
DOUBLE Stellt Gleitkommazahlen mit doppelter Genauigkeit und 8 Bytes dar.
FLOAT Stellt Gleitkommazahlen mit einfacher Genauigkeit und 4 Bytes dar.
INT Stellt 4-Byte-Ganzzahlen mit Vorzeichen dar.
INTERVAL intervalQualifier Stellt Zeitintervalle entweder auf einer Skala von Sekunden oder Monaten dar.
VOID Stellt den nicht typisierten NULL-Wert dar.
SMALLINT Stellt 2-Byte-Ganzzahlen mit Vorzeichen dar.
STRING Stellt Zeichenfolgenwerte dar.
TIMESTAMP Stellt Werte dar, die sich aus Feldern für Jahr, Monat, Tag, Stunde, Minute und Sekunde mit der lokalen Zeitzone der Sitzung zusammensetzen.
TIMESTAMP_NTZ Stellt Werte dar, die sich aus Werten der Felder Jahr, Monat, Tag, Stunde, Minute und Sekunde zusammensetzen. Alle Vorgänge werden ohne Berücksichtigung einer Zeitzone ausgeführt.
TINYINT Stellt 1-Byte-Ganzzahlen mit Vorzeichen dar.
GEOGRAFIE(srid) Stellt Geografiewerte dar, deren Koordinatenreferenzsystem geografisch (Längengrad und Breitengrad in Grad) ist und durch den srid Wert definiert wird. Wenn srid auf ANY festgelegt ist, ist das Koordinatenreferenzsystem im Typ nicht hartcodiert und wird zu einem Laufzeitwert.
GEOMETRY(srid) Stellt Geometriewerte dar, deren Koordinatenverweissystem als Cartsian verstanden wird und durch den srid Wert definiert wird. Wenn srid auf ANY festgelegt ist, ist das Koordinatenreferenzsystem im Typ nicht hartcodiert und wird zu einem Laufzeitwert.
ARRAY < ElementTyp > Stellt Werte dar, die eine Sequenz von Elementen mit dem Typ elementType umfassen.
MAP < keyType,valueType > Stellt Werte dar, die aus einer Menge von Schlüssel-Wert-Paaren bestehen.
STRUCT < [FieldName : fieldType [NOT NULL][COMMENT str][, ...]] > Stellt Werte mit der Struktur dar, die von einer Sequenz von Feldern beschrieben wird.
VARIANT Stellt semi-strukturierte Daten dar.
OBJECT Repräsentiert Werte in einem VARIANT mit einer Struktur, die durch eine Reihe von Feldern beschrieben wird.

Important

Der Typ VOID wird von Delta Lake nicht unterstützt.

Datentypklassifizierung

Datentypen sind in die folgenden Klassen eingeteilt:

Integrale numerische Typen

Integrale numerische Typen stellen ganze Zahlen dar:

Exakte numerische Typen

Genaue numerische Typen stellen Base-10-Zahlen dar:

Binäre Gleitkommatypen

Binäre Gleitkommatypen verwenden Exponenten und eine binäre Darstellung, um einen großen Zahlenbereich abzudecken:

Numerische Typen

Numerische Typen stellen alle numerischen Datentypen dar:

Datums-/Uhrzeittypen

Datums- und Uhrzeittypen stellen Datums- und Uhrzeitkomponenten dar:

Geospatialtypen

Geospatialtypen stellen geometrische oder geografische Objekte dar:

Einfache Typen

Einfache Typen sind Typen, die durch das Halten von Singletonwerten definiert werden:

Komplexe Typen

Komplexe Typen bestehen aus mehreren Komponenten komplexer oder einfacher Typen:

Sprachzuordnungen

Gilt für:check marked yes Databricks Runtime

Scala

Spark SQL-Datentypen sind im Paket org.apache.spark.sql.types definiert. Sie greifen darauf zu, indem Sie das Paket importieren:

import org.apache.spark.sql.types._
SQL-Typ Datentyp Werttyp API zum Zugreifen auf einen Datentyp oder zum Erstellen eines Datentyps
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
Jahresmonatsintervall YearMonthIntervalType java.time.Period JahrMonatIntervallTyp (3)
Tageszeitintervall DayTimeIntervalType java.time.Duration DayTimeIntervalType (3)
GEOGRAFIE(srid) GeographieTyp org.apache.spark.unsafe.type.GeographyVal Geografietyp
GEOMETRY(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). Felder sind eine Sequenz von StructField. 4.
StructField Der Werttyp des Datentyps dieses Felds (z. B. „Int“ für ein „StructField“ mit dem Datentyp „IntegerType“) StructField(name, dataType [, nullwertfähig]). 4
VARIANT VariantType org.apache.spark.unsafe.type.VariantVal VariantType
OBJECT Nicht unterstützt Nicht unterstützt Nicht unterstützt

Java

Spark SQL-Datentypen sind im Paket org.apache.spark.sql.types definiert. Verwenden Sie die in org.apache.spark.sql.types.DataTypes verfügbaren Factorymethoden, um auf einen Datentyp zu zugreifen oder einen Datentyp zu erstellen.

SQL-Typ Datentyp Werttyp API zum Zugreifen auf einen Datentyp oder zum Erstellen eines Datentyps
TINYINT ByteType byte oder Byte DataTypes.ByteType
SMALLINT ShortType short oder short DataTypes.ShortType
INT IntegerType int oder Integer DataTypes.IntegerType
BIGINT LongType long oder Long DataTypes.LongType
FLOAT FloatType float oder Float DataTypes.FloatType
DOUBLE DoubleType double oder 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 oder 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
Jahresmonatsintervall YearMonthIntervalType java.time.Period JahrMonatIntervallTyp (3)
Tageszeitintervall DayTimeIntervalType java.time.Duration DayTimeIntervalType (3)
GEOGRAFIE(srid) GeografieTyp org.apache.spark.unsafe.type.GeographyVal GeographyType
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). Felder sind eine Liste oder ein Array von StructField. 4
StructField Der Werttyp des Datentyps dieses Felds (z. B. „int“ für ein „StructField“ mit dem Datentyp „IntegerType“) DataTypes.createStructField(name, dataType, nullable) 4
VARIANT VariantType org.apache.spark.unsafe.type.VariantVal VariantType
OBJECT Nicht unterstützt Nicht unterstützt Nicht unterstützt

Python

Spark SQL-Datentypen sind im Paket pyspark.sql.types definiert. Sie greifen darauf zu, indem Sie das Paket importieren:

from pyspark.sql.types import *
SQL-Typ Datentyp Werttyp API zum Zugreifen auf einen Datentyp oder zum Erstellen eines Datentyps
TINYINT ByteType int oder long. (1) ByteType()
SMALLINT ShortType int oder long. (1) ShortType()
INT IntegerType int oder long IntegerType()
BIGINT LongType lang (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()
Jahresmonatsintervall YearMonthIntervalType Nicht unterstützt Nicht unterstützt
Tageszeitintervall DayTimeIntervalType datetime.timedelta DayTimeIntervalType (3)
GEOGRAFIE(srid) GeographyType GeographyVal GeographyType()
GEOMETRY(srid) GeometryType GeometryVal GeometryType()
ARRAY ArrayType list, tuple oder array ArrayType(elementType, [containsNull]). (2)
MAP MapType dict MapType(keyType, valueType, [valueContainsNull]). (2)
STRUCT StructType list oder tuple StructType(fields). Felder sind eine Sequenz von StructField. (4)
StructField Der Werttyp des Datentyps dieses Felds (z. B. „Int“ für ein „StructField“ mit dem Datentyp „IntegerType“) StructField(name, dataType, [nullable]). (4)
VARIANT VariantType VariantVal VariantType()
OBJECT Nicht unterstützt Nicht unterstützt Nicht unterstützt

R

SQL-Typ Datentyp Werttyp API zum Zugreifen auf einen Datentyp oder zum Erstellen eines Datentyps
TINYINT ByteType ganze Zahl (1) 'byte'
SMALLINT ShortType ganze Zahl (1) 'short'
INT IntegerType integer 'integer'
BIGINT LongType ganze Zahl (1) 'long'
FLOAT FloatType numerisch (1) 'float'
DOUBLE DoubleType numeric 'double'
DECIMAL(p,s) DecimalType Nicht unterstützt Nicht unterstützt
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'
Jahresmonatsintervall YearMonthIntervalType Nicht unterstützt Nicht unterstützt
Tageszeitintervall DayTimeIntervalType Nicht unterstützt Nicht unterstützt
GEOGRAFIE(srid) Nicht unterstützt Nicht unterstützt Nicht unterstützt
GEOMETRY(srid) Nicht unterstützt Nicht unterstützt Nicht unterstützt
ARRAY ArrayType vector oder list list(type='array', elementType=elementType, containsNull=[containsNull]). (2)
MAP MapType environment list(type='map', keyType=keyType, valueType=valueType, valueContainsNull=[valueContainsNull]). (2)
STRUCT StructType benannte Liste list(typ='struct', felder=felder). Felder sind eine Sequenz von StructField. (4)
StructField Der Werttyp des Datentyps dieses Felds (z. B. „integer“ für ein „StructField“ mit dem Datentyp „IntegerType“) list(name=name, type=dataType, nullable=[nullable]). (4)
VARIANT Nicht unterstützt Nicht unterstützt Nicht unterstützt
OBJECT Nicht unterstützt Nicht unterstützt Nicht unterstützt

(1) Zahlen werden zur Laufzeit in die Domäne konvertiert. Die Zahlen müssen innerhalb des Bereichs liegen.

(2) Der optionale Wert hat standardmäßig den Wert TRUE.

(3) Intervalltypen

  • YearMonthIntervalType([startField,] endField): Stellt ein Jahr-Monats-Intervall dar, das aus einer zusammenhängenden Teilmenge der folgenden Felder besteht:

    startField ist das Feld ganz links, und endField ist das ganz rechte Feld des Typs. Gültige Werte von startField und endField sind 0(MONTH) und 1(YEAR).

  • DayTimeIntervalType([startField,] endField): Stellt ein Tageszeitintervall dar, das sich aus einer zusammenhängenden Teilmenge der folgenden Felder zusammensetzt:

    startField ist das Feld ganz links, und endField ist das ganz rechte Feld des Typs. Gültige Werte von startField und endField sind 0(DAY), 1(HOUR), 2(MINUTE), 3(SECOND).

(4)StructType

  • StructType(fields) Stellt Werte mit der Struktur dar, die durch eine Sequenz, Liste oder ein Array von StructFields (Felder). Zwei Felder mit dem gleichen Namen sind nicht zulässig.
  • StructField(name, dataType, nullable) Repräsentiert ein Feld in einem StructType. Der Name eines Felds wird durch name angegeben. Der Datentyp eines Felds wird durch „dataType“ angegeben. nullable gibt an, ob die Werte dieser Felder einen bestimmten Wert haben können. null Werte. Dies ist die Standardeinstellung.