Datentypen
Gilt für: Databricks SQL 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. |
VARIANT | Stellt halbstrukturierte Daten dar. |
OBJECT | Stellt Werte in einer VARIANT -Instanz mit der Struktur dar, die von einer Sequenz von Feldern beschrieben wird. |
Wichtig
Der Typ VOID
wird von Delta Lake nicht unterstützt.
Datentypklassifizierung
Datentypen sind in die folgenden Klassen eingeteilt:
- Integrale numerische Typen stellen ganze Zahlen dar:
- Exakte numerische Typen stellen Zahlen zur Basis-10 dar:
- Binäre Gleitkommatypen verwenden Exponenten und eine binäre Darstellung, um einen großen Bereich von Zahlen abzudecken:
- Numerische Typen stellen alle numerischen Datentypen dar:
- Datum-Zeit-Typen stellen Datums- und Uhrzeitkomponenten dar:
- Einfache Typen sind Typen mit Singelton-Werten:
- Komplexe Typen setzen sich aus mehreren Komponenten komplexer oder einfacher Typen zusammen:
Sprachzuordnungen
Gilt für: 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 | |
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 |
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 | |
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 | 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) | |
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 | 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) | |
VARIANT | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt |
OBJECT | Nicht unterstützt | Nicht unterstützt | Nicht unterstützt |
(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 undendField
das Feld ganz rechts des Typs. Gültige Werte vonstartField
undendField
sind0(MONTH)
und1(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 undendField
das Feld ganz rechts des Typs. Gültige Werte vonstartField
undendField
sind0(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 vonStructField
en (Feldern) beschrieben werden. Zwei Felder mit dem gleichen Namen sind nicht zulässig.StructField(name, dataType, nullable)
stellt ein Feld in einemStructType
dar. Der Name eines Felds wird durchname
angegeben. Der Datentyp eines Felds wird durch „dataType“ angegeben.nullable
gibt an, ob Werte dieser Feldernull
-Werte aufweisen können. Dies ist die Standardoption.