Datové typy

Platí pro:check marked yes Databricks SQL check marked yes Databricks Runtime

Pravidla určující způsob řešení konfliktů mezi datovými typy najdete v tématu Pravidla datového typu SQL.

Podporované datové typy

Azure Databricks podporuje následující datové typy:

Datový typ Popis
BIGINT Představuje 8 bajtová celočíselná čísla.
BINÁRNÍ Představuje bajtové sekvenční hodnoty.
BOOLEAN Představuje logické hodnoty.
DATE (Datum) Představuje hodnoty obsahující hodnoty pro rok, měsíc a den bez časového pásma.
DECIMAL(p;s) Představuje čísla s maximální přesností p a pevným měřítkem s.
DVOJITÉ Představuje čísla s plovoucí desetinnou čárkou 8 bajtů s dvojitou přesností.
FLOAT Představuje čísla s plovoucí desetinnou čárkou s přesností na 4 bajty.
INT Představuje 4 bajtová celočíselná čísla.
INTERVALQualifier Představuje časové intervaly v rozsahu sekund nebo měsíců.
VOID Představuje netypovanou hodnotu NULL.
SMALLINT Představuje 2 bajtová celočíselná čísla.
ŘETĚZEC Představuje hodnoty řetězce znaků.
ČASOVÉ RAZÍTKO Představuje hodnoty obsahující hodnoty pro rok, měsíc, den, hodinu, minutu a sekundu s místním časovým pásmem relace.
TIMESTAMP_NTZ Představuje hodnoty tvořené hodnotami polí rok, měsíc, den, hodina, minuta a sekunda. Všechny operace se provádějí bez zohlednění časového pásma.
TINYINT Představuje 1 bajtová celočíselná čísla.
ARRAY <elementType> Představuje hodnoty tvořící sekvenci prvků s typem .elementType
MAP < keyType, valueType > Představuje hodnoty tvořené sadou párů klíč-hodnota.
STRUCT < [fieldName: fieldType [NOT NULL][COMMENT str][, ...]] > Představuje hodnoty se strukturou popsanou posloupností polí.

Klasifikace datových typů

Datové typy jsou seskupené do následujících tříd:

Mapování jazyka

Platí pro:check marked yes Databricks Runtime

Scala

Datové typy Spark SQL jsou definovány v balíčku org.apache.spark.sql.types. Přístup k nim získáte importem balíčku:

import org.apache.spark.sql.types._
Typ SQL Datový typ Typ hodnoty Rozhraní API pro přístup k datovému typu nebo jeho vytvoření
TINYINT ByteType Byte ByteType
SMALLINT Krátký typ Krátké Krátký typ
INT IntegerType Celé číslo IntegerType
BIGINT LongType Dlouhé celé číslo LongType
FLOAT FloatType Float FloatType
DVOJITÉ DoubleType Hodnota s dvojitou přesností DoubleType
DECIMAL(p;s) DecimalType java.math.BigDecimal DecimalType
ŘETĚZEC StringType Řetězec StringType
BINÁRNÍ BinaryType Pole[Bajt] BinaryType
BOOLEAN BooleanType Logická hodnota BooleanType
ČASOVÉ RAZÍTKO TimestampType java.sql.Timestamp TimestampType
TIMESTAMP_NTZ TimestampNTZType java.time.LocalDateTime TimestampNTZType
DATE (Datum) Typ data java.sql.Date Typ data
interval mezi rokem YearMonthIntervalType java.time.Period YearMonthIntervalType (3)
denní interval DayTimeIntervalType java.time.Duration DayTimeIntervalType (3)
POLE ArrayType scala.collection.Seq ArrayType(elementType [; containsNull]). (2)
MAPU MapType scala.collection.Map MapType(keyType; valueType [; valueContainsNull]). (2)
STRUCT Typ struktury org.apache.spark.sql.Row StructType(pole). pole je seq of StructField. 4.
StructField Typ hodnoty datového typu tohoto pole (například Int pro StructField s datovým typem IntegerType) StructField(name, dataType [, nullable]). 4

Java

Datové typy Spark SQL jsou definovány v balíčku org.apache.spark.sql.types. Pokud chcete získat přístup k datovému typu nebo ho vytvořit, použijte metody objektu pro vytváření, které jsou k dispozici v org.apache.spark.sql.types.DataTypessouboru .

Typ SQL Datový typ Typ hodnoty Rozhraní API pro přístup k datovému typu nebo jeho vytvoření
TINYINT ByteType bajt nebo bajt DataTypes.ByteType
SMALLINT Krátký typ krátká nebo krátká DataTypes.ShortType
INT IntegerType int nebo Integer DataTypes.IntegerType
BIGINT LongType dlouhé nebo dlouhé DataTypes.LongType
FLOAT FloatType float nebo float DataTypes.FloatType
DVOJITÉ DoubleType double or Double DataTypes.DoubleType
DECIMAL(p;s) DecimalType java.math.BigDecimal DataTypes.createDecimalType() DataTypes.createDecimalType(přesnost, měřítko).
ŘETĚZEC StringType Řetězec DataTypes.StringType
BINÁRNÍ BinaryType byte[] DataTypes.BinaryType
BOOLEAN BooleanType logická hodnota nebo logická hodnota DataTypes.BooleanType
ČASOVÉ RAZÍTKO TimestampType java.sql.Timestamp DataTypes.TimestampType
TIMESTAMP_NTZ TimestampNTZType java.time.LocalDateTime DataTypes.TimestampNTZType
DATE (Datum) Typ data java.sql.Date DataTypes.DateType
interval mezi rokem YearMonthIntervalType java.time.Period YearMonthIntervalType (3)
denní interval DayTimeIntervalType java.time.Duration DayTimeIntervalType (3)
POLE ArrayType ava.util.List DataTypes.createArrayType(elementType [, containsNull]).(2)
MAPU MapType java.util.Map DataTypes.createMapType(keyType, valueType [, valueContainsNull]).(2)
STRUCT Typ struktury org.apache.spark.sql.Row DataTypes.createStructType(pole). pole jsou seznam nebo pole StructField. 4
StructField Typ hodnoty datového typu tohoto pole (například int pro StructField s datovým typem IntegerType) DataTypes.createStructField(name, dataType, nullable) 4

Python

Datové typy Spark SQL jsou definovány v balíčku pyspark.sql.types. Přístup k nim získáte importem balíčku:

from pyspark.sql.types import *
Typ SQL Datový typ Typ hodnoty Rozhraní API pro přístup k datovému typu nebo jeho vytvoření
TINYINT ByteType int nebo long. (1) ByteType()
SMALLINT Krátký typ int nebo long. (1) ShortType()
INT IntegerType int nebo long IntegerType()
BIGINT LongType long (1) LongType()
FLOAT FloatType float (1) FloatType()
DVOJITÉ DoubleType float (číslo s plovoucí řádovou čárkou) DoubleType()
DECIMAL(p;s) DecimalType Desetinných. Desetinných DecimalType()
ŘETĚZEC StringType řetězec StringType()
BINÁRNÍ BinaryType Bytearray BinaryType()
BOOLEAN BooleanType bool BooleanType()
ČASOVÉ RAZÍTKO TimestampType datetime.datetime TimestampType()
TIMESTAMP_NTZ TimestampNTZType datetime.datetime TimestampNTZType()
DATE (Datum) Typ data datetime.date DateType()
interval mezi rokem YearMonthIntervalType Nepodporováno Nepodporováno
denní interval DayTimeIntervalType datetime.timedelta DayTimeIntervalType (3)
POLE ArrayType seznam, řazená kolekce členů nebo pole ArrayType(elementType; [containsNull]).(2)
MAPU MapType Dict MapType(keyType, valueType, [valueContainsNull]).(2)
STRUCT Typ struktury seznam nebo řazená kolekce členů StructType(pole). pole je Seq of StructField. (4)
StructField Typ hodnoty datového typu tohoto pole (například Int pro StructField s datovým typem IntegerType) StructField(name, dataType, [nullable]).(4)

R

Typ SQL Datový typ Typ hodnoty Rozhraní API pro přístup k datovému typu nebo jeho vytvoření
TINYINT ByteType celé číslo (1) "bajt"
SMALLINT Krátký typ celé číslo (1) "short"
INT IntegerType integer Integer
BIGINT LongType celé číslo (1) "long"
FLOAT FloatType numeric (1) "float"
DVOJITÉ DoubleType numerické "double"
DECIMAL(p;s) DecimalType Nepodporováno Nepodporováno
ŘETĚZEC StringType . Řetězec
BINÁRNÍ BinaryType raw 'binary'
BOOLEAN BooleanType Logické Bool
ČASOVÉ RAZÍTKO TimestampType POSIXct Časové razítko
TIMESTAMP_NTZ TimestampNTZType datetime.datetime TimestampNTZType()
DATE (Datum) Typ data Date 'datum'
interval mezi rokem YearMonthIntervalType Nepodporováno Nepodporováno
denní interval DayTimeIntervalType Nepodporováno Nepodporováno
POLE ArrayType vektor nebo seznam list(type='array', elementType=elementType, containsNull=[containsNull]).(2)
MAPU MapType prostředí list(type='map', keyType=keyType, valueType=valueType, valueContainsNull=[valueContainsNull]).(2)
STRUCT Typ struktury pojmenovaný seznam list(type='struct'; fields=fields). pole je seq of StructField. (4)
StructField Typ hodnoty datového typu tohoto pole (například celé číslo pole StructField s datovým typem IntegerType) list(name=name, type=dataType, nullable=[nullable]).(4)

(1) Čísla se za běhu převedou na doménu. Ujistěte se, že jsou čísla v rozsahu.

(2) Volitelná hodnota je výchozí TRUEhodnota .

(3) Typy intervalů

  • YearMonthIntervalType([startField,] endField): Představuje interval roku, který je tvořen souvislou podmnožinou následujících polí:

    startField je pole úplně vlevo a endField je pole typu úplně vpravo. Platné hodnoty startField a jsou 0(MONTH) a endField1(YEAR).

  • DayTimeIntervalType([startField,] endField): Představuje denní interval, který se skládá z souvislé podmnožina následujících polí:

    startField je pole úplně vlevo a endField je pole typu úplně vpravo. Platné hodnoty startField a endField jsou 0(DAY), , 1(HOUR)2(MINUTE), 3(SECOND).

(4)StructType

  • StructType(fields) Představuje hodnoty se strukturou popsanou sekvencí, seznamem nebo polem StructField(polí). Dvě pole se stejným názvem nejsou povolená.
  • StructField(name, dataType, nullable) Představuje pole v objektu StructType. Název pole je označen .name Datový typ pole je označen typem dataType. nullable označuje, zda mohou mít null hodnoty těchto polí. Tato možnost je výchozí.