Datatyper
Gäller för: Databricks SQL
Databricks Runtime
Regler för hur konflikter mellan datatyper löses finns i REGLER för SQL-datatyp.
Datatyper som stöds
Azure Databricks stöder följande datatyper:
Datatyp | beskrivning |
---|---|
BIGINT | Representerar 8 byte signerade heltalsnummer. |
BINÄR | Representerar bytesekvensvärden. |
BOOLESK | Representerar booleska värden. |
DATE | Representerar värden som består av värden för fälten år, månad och dag, utan tidszon. |
DECIMAL(p,s) | Representerar tal med maximal precision p och fast skalning s . |
DUBBEL | Representerar flyttal med 8 byte med dubbel precision. |
FLYTA | Representerar flyttal med 4 byte med enkel precision. |
INT | Representerar 4 bytes signerade heltalsnummer. |
INTERVALLintervallKvalificerare | Representerar tidsintervall antingen på en skala av sekunder eller månader. |
TOMRUM | Representerar den otypade NULL-filen. |
SMALLINT | Representerar 2 byte signerade heltalsnummer. |
STRÄNG | Representerar teckensträngsvärden. |
TIMESTAMP | Representerar värden som består av värden för fälten år, månad, dag, timme, minut och sekund, med den lokala tidszonen för sessionen. |
TIMESTAMP_NTZ | Representerar värden som består av värden för fälten år, månad, dag, timme, minut och sekund. Alla åtgärder utförs utan att ta hänsyn till någon tidszon. |
TINYINT | Representerar 1 byte signerade heltalsnummer. |
ARRAY-elementTyp <> | Representerar värden som består av en sekvens med element med typen elementType . |
MAP < keyType,valueType > | Representerar värden som består av en uppsättning nyckel/värde-par. |
STRUCT < [fieldName : fieldType [NOT NULL][COMMENT str][, ...]] > | Representerar värden med den struktur som beskrivs av en sekvens med fält. |
VARIANT | Representerar halvstrukturerade data. |
OBJEKT | Representerar värden i en VARIANT med strukturen som beskrivs av en uppsättning fält. |
Viktigt!
Delta Lake stöder VOID
inte typen.
Klassificering av datatyp
Datatyper grupperas i följande klasser:
- Integral numeriska typer representerar heltal:
- Exakta numeriska typer representerar base-10-tal:
- Binära flyttalstyper använder exponenter och en binär representation för att täcka ett stort antal tal:
- Numeriska typer representerar alla numeriska datatyper:
- Datum- och tidstyper representerar datum- och tidskomponenter:
- Enkla typer är typer som definieras genom att lagra singleton-värden:
- Komplexa typer består av flera komponenter av komplexa eller enkla typer:
Språkmappningar
Gäller för: Databricks Runtime
Scala
Spark SQL-datatyper definieras i paketet org.apache.spark.sql.types
. Du kommer åt dem genom att importera paketet:
import org.apache.spark.sql.types._
SQL-typ | Datatyp | Värdetyp | API för att komma åt eller skapa datatyp |
---|---|---|---|
TINYINT | ByteType | Byte | ByteType |
SMALLINT | ShortType | Kort | ShortType |
INT | IntegerType | Int | IntegerType |
BIGINT | LongType | Long | LongType |
FLYTA | FloatType | Flyttal | FloatType |
DUBBEL | DoubleType | Dubbel | DoubleType |
DECIMAL(p,s) | Decimaltyp | java.math.BigDecimal | Decimaltyp |
STRÄNG | StringType | String | StringType |
BINÄR | BinaryType | Matris[Byte] | BinaryType |
BOOLESK | BooleanType | Booleskt | BooleanType |
TIMESTAMP | Tidsstämpeltyp | java.sql.Timestamp | Tidsstämpeltyp |
TIMESTAMP_NTZ | TidsstämpelNTZType | java.time.LocalDateTime | TidsstämpelNTZType |
DATE | DateType | java.sql.Date | DateType |
årsmånadsintervall | YearMonthIntervalType | java.time.Period | YearMonthIntervalType (3) |
dagtidsintervall | DayTimeIntervalType | java.time.Duration | DayTimeIntervalType (3) |
SAMLING | ArrayType | scala.collection.Seq | ArrayType(elementType [, containsNull]). (2) |
KARTA | MapType | scala.collection.Map | MapType(keyType, valueType [, valueContainsNull]). (2) |
STRUCT | StructType | org.apache.spark.sql.Row | StructType(fält). fält är en Seq av StructField. 4. |
StructField | Värdetypen för datatypen för det här fältet(Till exempel Int för en StructField med datatypen IntegerType) | StructField(name, dataType [, nullable]). 4 | |
VARIANT | VariantType | org.apache.spark.unsafe.type.VariantVal | VariantType |
OBJEKT | Stöds inte | Stöds inte | Stöds inte |
Java
Spark SQL-datatyper definieras i paketet org.apache.spark.sql.types
. Om du vill komma åt eller skapa en datatyp använder du fabriksmetoderna i org.apache.spark.sql.types.DataTypes
.
SQL-typ | Datatyp | Värdetyp | API för att komma åt eller skapa datatyp |
---|---|---|---|
TINYINT | ByteType | byte eller byte | DataTypes.ByteType |
SMALLINT | ShortType | kort eller kort | DataTypes.ShortType |
INT | IntegerType | int eller heltal | DataTypes.IntegerType |
BIGINT | LongType | lång eller lång | DataTypes.LongType |
FLYTA | FloatType | flyttal eller flyttal | DataTypes.FloatType |
DUBBEL | DoubleType | dubbel eller dubbel | DataTypes.DoubleType |
DECIMAL(p,s) | Decimaltyp | java.math.BigDecimal | DataTypes.createDecimalType() DataTypes.createDecimalType(precision, skala). |
STRÄNG | StringType | String | DataTypes.StringType |
BINÄR | BinaryType | byte[] | DataTypes.BinaryType |
BOOLESK | BooleanType | boolesk eller boolesk | DataTypes.BooleanType |
TIMESTAMP | Tidsstämpeltyp | java.sql.Timestamp | DataTypes.TimestampType |
TIMESTAMP_NTZ | TidsstämpelNTZType | java.time.LocalDateTime | DataTypes.TimestampNTZType |
DATE | DateType | java.sql.Date | DataTypes.DateType |
årsmånadsintervall | YearMonthIntervalType | java.time.Period | YearMonthIntervalType (3) |
dagtidsintervall | DayTimeIntervalType | java.time.Duration | DayTimeIntervalType (3) |
SAMLING | ArrayType | ava.util.List | DataTypes.createArrayType(elementType [, containsNull]).(2) |
KARTA | MapType | java.util.Map | DataTypes.createMapType(keyType, valueType [, valueContainsNull]).(2) |
STRUCT | StructType | org.apache.spark.sql.Row | DataTypes.createStructType(fields). fält är en lista eller matris med StructField. 4 |
StructField | Värdetypen för datatypen för det här fältet (till exempel int för en StructField med datatypen IntegerType) | DataTypes.createStructField(name, dataType, nullable) 4 | |
VARIANT | VariantType | org.apache.spark.unsafe.type.VariantVal | VariantType |
OBJEKT | Stöds inte | Stöds inte | Stöds inte |
Python
Spark SQL-datatyper definieras i paketet pyspark.sql.types
. Du kommer åt dem genom att importera paketet:
from pyspark.sql.types import *
SQL-typ | Datatyp | Värdetyp | API för att komma åt eller skapa datatyp |
---|---|---|---|
TINYINT | ByteType | int eller long. (1) | ByteType() |
SMALLINT | ShortType | int eller long. (1) | ShortType() |
INT | IntegerType | int eller long | IntegerType() |
BIGINT | LongType | long (1) | LongType() |
FLYTA | FloatType | float (1) | FloatType() |
DUBBEL | DoubleType | flyttal | DoubleType() |
DECIMAL(p,s) | Decimaltyp | decimal. Decimal | DecimalType() |
STRÄNG | StringType | sträng | StringType() |
BINÄR | BinaryType | bytearray | BinaryType() |
BOOLESK | BooleanType | bool | BooleanType() |
TIMESTAMP | Tidsstämpeltyp | datetime.datetime | TimestampType() |
TIMESTAMP_NTZ | TidsstämpelNTZType | datetime.datetime | TidsstämpelNTZType() |
DATE | DateType | datetime.date | DateType() |
årsmånadsintervall | YearMonthIntervalType | Stöds inte | Stöds inte |
dagtidsintervall | DayTimeIntervalType | datetime.timedelta | DayTimeIntervalType (3) |
SAMLING | ArrayType | lista, tuppeln eller matrisen | ArrayType(elementType, [containsNull]).(2) |
KARTA | MapType | Dict | MapType(keyType, valueType, [valueContainsNull]).(2) |
STRUCT | StructType | lista eller tupl | StructType(fält). fältet är en Seq av StructField. (4) |
StructField | Värdetypen för datatypen för det här fältet (till exempel Int för en StructField med datatypen IntegerType) | StructField(name, dataType, [nullable]).(4) | |
VARIANT | VariantType | VariantVal | VariantType() |
OBJEKT | Stöds inte | Stöds inte | Stöds inte |
R
SQL-typ | Datatyp | Värdetyp | API för att komma åt eller skapa datatyp |
---|---|---|---|
TINYINT | ByteType | heltal (1) | "byte" |
SMALLINT | ShortType | heltal (1) | "kort" |
INT | IntegerType | integer | "heltal" |
BIGINT | LongType | heltal (1) | "long" |
FLYTA | FloatType | numeriskt (1) | "float" |
DUBBEL | DoubleType | numeric | "dubbel" |
DECIMAL(p,s) | Decimaltyp | Stöds inte | Stöds inte |
STRÄNG | StringType | tecken | "sträng" |
BINÄR | BinaryType | rå | "binärt" |
BOOLESK | BooleanType | logisk | "bool" |
TIMESTAMP | Tidsstämpeltyp | POSIXct | "tidsstämpel" |
TIMESTAMP_NTZ | TidsstämpelNTZType | datetime.datetime | TidsstämpelNTZType() |
DATE | DateType | Datum | "datum" |
årsmånadsintervall | YearMonthIntervalType | Stöds inte | Stöds inte |
dagtidsintervall | DayTimeIntervalType | Stöds inte | Stöds inte |
SAMLING | ArrayType | vektor eller lista | lista(typ='array', elementTyp=elementType, innehållerNull=[containsNull]).(2) |
KARTA | MapType | -miljö | list(type='map', keyType=keyType, valueType=valueType, valueContainsNull=[valueContainsNull]).(2) |
STRUCT | StructType | benämnd lista | list(type="struct", fields=fields). fält är en Seq av StructField. (4) |
StructField | Värdetypen för datatypen för det här fältet (till exempel heltal för ett StructField med datatypen IntegerType) | list(name=name, type=dataType, nullable=[nullable]).(4) | |
VARIANT | Stöds inte | Stöds inte | Stöds inte |
OBJEKT | Stöds inte | Stöds inte | Stöds inte |
(1) Tal konverteras till domänen vid körning. Kontrollera att talen ligger inom intervallet.
(2) Det valfria värdet är TRUE
som standard .
(3) Intervalltyper
YearMonthIntervalType([startField,] endField)
: Representerar ett årsmånadsintervall som består av en sammanhängande delmängd av följande fält:startField
är det vänstra fältet ochendField
är det högra fältet av typen. Giltiga värden förstartField
ochendField
är0(MONTH)
och1(YEAR)
.DayTimeIntervalType([startField,] endField)
: Representerar ett dagtidsintervall som består av en sammanhängande delmängd av följande fält:startField
är det vänstra fältet ochendField
är det högra fältet av typen. Giltiga värden förstartField
ochendField
är0(DAY)
,1(HOUR)
,2(MINUTE)
,3(SECOND)
.
(4)StructType
-
StructType(fields)
Representerar värden med den struktur som beskrivs av en sekvens, lista eller matris medStructField
s (fält). Två fält med samma namn tillåts inte. -
StructField(name, dataType, nullable)
Representerar ett fält i enStructType
. Namnet på ett fält anges avname
. Datatypen för ett fält anges av dataType.nullable
anger om värdena för dessa fält kan hanull
värden. Det här är standardinställningen.