Datentypen

Gilt für:durch Häkchen mit „Ja“ markiert Databricks SQL durch Häkchen mit „Ja“ markiert 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 BESCHREIBUNG
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.
ARRAY <elementType> 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.

Wichtig

Delta Lake unterstützt die Typen VOID und INTERVAL nicht.

Datentypklassifizierung

Datentypen sind in die folgenden Klassen eingeteilt:

Sprachzuordnungen

Gilt für:Häkchen gesetzt ja 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 Schnellstart 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
Jahr/Monat-Intervall YearMonthIntervalType java.time.Period YearMonthIntervalType (3)
Tageszeit-Intervall DayTimeIntervalType java.time.Duration DayTimeIntervalType (3)
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 [, nullable]). 4

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
Jahr/Monat-Intervall YearMonthIntervalType java.time.Period YearMonthIntervalType (3)
Tageszeit-Intervall DayTimeIntervalType java.time.Duration DayTimeIntervalType (3)
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

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 long (1) LongType()
FLOAT FloatType Gleitkomma(1) FloatType()
DOUBLE DoubleType float DoubleType()
DECIMAL(p,s) DecimalType decimal.Decimal DecimalType()
STRING StringType Zeichenfolge 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()
Jahr/Monat-Intervall YearMonthIntervalType Nicht unterstützt Nicht unterstützt
Tageszeit-Intervall DayTimeIntervalType datetime.timedelta DayTimeIntervalType (3)
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)

R

SQL-Typ Datentyp Werttyp API zum Zugreifen auf einen Datentyp oder zum Erstellen eines Datentyps
TINYINT ByteType Integer (1) ‚Byte‘
SMALLINT ShortType Integer (1) ‚short‘
INT IntegerType integer ‚Integer‘
BIGINT LongType Integer (1) ‚long‘
FLOAT FloatType numerisch(1) ‚Gleitkomma‘
DOUBLE DoubleType numeric ‚Double‘
DECIMAL(p,s) DecimalType Nicht unterstützt Nicht unterstützt
STRING StringType character ‚Zeichenfolge‘
BINARY BinaryType raw ‚binär‘
BOOLEAN BooleanType Logisch ‚Bool‘
TIMESTAMP TimestampType POSIXct ‚Zeitstempel‘
TIMESTAMP_NTZ TimestampNTZType datetime.datetime TimestampNTZType()
DATE DateType Date ‚Datum‘
Jahr/Monat-Intervall YearMonthIntervalType Nicht unterstützt Nicht unterstützt
Tageszeit-Intervall DayTimeIntervalType 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,valueContainsNull=[valueContainsNull]). (2)
STRUCT StructType benannte Liste list(type='struct', fields=fields). 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)

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

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

(3) Intervalltypen

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

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

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

    startField ist das Feld ganz links und endField das Feld ganz rechts 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 von einer Sequenz, einer Liste oder einem Array von StructFielden (Feldern) beschrieben werden. Zwei Felder mit dem gleichen Namen sind nicht zulässig.
  • StructField(name, dataType, nullable) stellt ein Feld in einem StructType dar. Der Name eines Felds wird durch name angegeben. Der Datentyp eines Felds wird durch „dataType“ angegeben. nullable gibt an, ob Werte dieser Felder null-Werte aufweisen können. Dies ist die Standardoption.