Tipo di dati

Si applica a:segno di spunta sì Databricks SQL segno di spunta sì Databricks Runtime

Per le regole che regolano il modo in cui vengono risolti i conflitti tra i tipi di dati, vedere Regole dei tipi di dati SQL.

Tipi di dati supportati

Azure Databricks supporta i tipi di dati seguenti:

Tipo di dati Descrizione
BIGINT Rappresenta numeri interi con segno a 8 byte.
BINARIO Rappresenta i valori della sequenza di byte.
BOOLEAN Rappresenta valori booleani.
DATE Rappresenta i valori che comprendono i valori di campi anno, mese e giorno, senza un fuso orario.
DECIMAL(p,s) Rappresenta numeri con precisione p massima e scala sfissa.
DOUBLE Rappresenta numeri a virgola mobile a precisione doppia a 8 byte.
FLOAT Rappresenta numeri a virgola mobile a precisione singola a 4 byte.
INT Rappresenta numeri interi con segno a 4 byte.
INTERVAL intervalQualifier Rappresenta gli intervalli di tempo su una scala di secondi o mesi.
VOID Rappresenta il valore NULL non tipizzato.
SMALLINT Rappresenta numeri interi con segno a 2 byte.
STRINGA Rappresenta i valori stringa di caratteri.
TIMESTAMP Rappresenta i valori che comprendono i valori di campi anno, mese, giorno, ora, minuto e secondo, con il fuso orario locale della sessione.
TIMESTAMP_NTZ Rappresenta i valori che comprendono i valori di campi anno, mese, giorno, ora, minuto e secondo. Tutte le operazioni vengono eseguite senza prendere in considerazione alcun fuso orario.
TINYINT Rappresenta numeri interi con segno a 1 byte.
ARRAY <elementType> Rappresenta i valori che comprendono una sequenza di elementi con il tipo di elementType.
MAP < keyType,valueType > Rappresenta i valori che comprendono un set di coppie chiave-valore.
STRUCT < [fieldName : fieldType [NOT NULL][COMMENT str][, ...]] > Rappresenta i valori con la struttura descritta da una sequenza di campi.

Importante

Delta Lake non supporta VOID i tipi e INTERVAL .

Classificazione dei tipi di dati

I tipi di dati vengono raggruppati nelle classi seguenti:

Mapping linguistici

Si applica a:segno di spunta sì Databricks Runtime

Scala

I tipi di dati SPARK SQL sono definiti nel pacchetto org.apache.spark.sql.types. È possibile accedervi importando il pacchetto:

import org.apache.spark.sql.types._
Tipo SQL Tipo di dati Tipo di valore API per accedere o creare un tipo di dati
TINYINT ByteType Byte ByteType
SMALLINT ShortType Short ShortType
INT IntegerType Int IntegerType
BIGINT LongType Lungo LongType
FLOAT FloatType Float FloatType
DOUBLE DoubleType Double DoubleType
DECIMAL(p,s) DecimalType java.math.BigDecimal DecimalType
STRINGA StringType String StringType
BINARIO BinaryType Matrice[Byte] BinaryType
BOOLEAN BooleanType Booleano BooleanType
TIMESTAMP TimestampType java.sql.Timestamp TimestampType
TIMESTAMP_NTZ TimestampNTZType java.time.LocalDateTime TimestampNTZType
DATE DateType java.sql.Date DateType
intervallo anno-mese YearMonthIntervalType java.time.Period YearMonthIntervalType (3)
intervallo di tempo del giorno DayTimeIntervalType java.time.Duration DayTimeIntervalType (3)
MATRICE ArrayType scala.collection.Seq ArrayType(elementType [, containsNull]). (2)
MAPPA MapType scala.collection.Map MapType(keyType, valueType [, valueContainsNull]). (2)
STRUCT StructType org.apache.spark.sql.Row StructType(fields). fields è un seq di StructField. 4.
StructField Tipo di valore del tipo di dati di questo campo(ad esempio, Int per un campo Struct con il tipo di dati IntegerType) StructField(name, dataType [, nullable]). 4

Java

I tipi di dati SPARK SQL sono definiti nel pacchetto org.apache.spark.sql.types. Per accedere o creare un tipo di dati, usare i metodi factory forniti in org.apache.spark.sql.types.DataTypes.

Tipo SQL Tipo di dati Tipo di valore API per accedere o creare un tipo di dati
TINYINT ByteType byte o byte DataTypes.ByteType
SMALLINT ShortType short o short DataTypes.ShortType
INT IntegerType int o Integer DataTypes.IntegerType
BIGINT LongType long o Long DataTypes.LongType
FLOAT FloatType float o Float DataTypes.FloatType
DOUBLE DoubleType double o Double DataTypes.DoubleType
DECIMAL(p,s) DecimalType java.math.BigDecimal DataTypes.createDecimalType() DataTypes.createDecimalType(precision, scale).
STRINGA StringType String DataTypes.StringType
BINARIO BinaryType byte[] DataTypes.BinaryType
BOOLEAN BooleanType booleano o booleano DataTypes.BooleanType
TIMESTAMP TimestampType java.sql.Timestamp DataTypes.TimestampType
TIMESTAMP_NTZ TimestampNTZType java.time.LocalDateTime DataTypes.TimestampNTZType
DATE DateType java.sql.Date DataTypes.DateType
intervallo anno-mese YearMonthIntervalType java.time.Period YearMonthIntervalType (3)
intervallo di tempo del giorno DayTimeIntervalType java.time.Duration DayTimeIntervalType (3)
MATRICE ArrayType ava.util.List DataTypes.createArrayType(elementType [, containsNull]).(2)
MAPPA MapType java.util.Map DataTypes.createMapType(keyType, valueType [, valueContainsNull]).(2)
STRUCT StructType org.apache.spark.sql.Row DataTypes.createStructType(fields). fields è un elenco o una matrice di StructField. 4
StructField Tipo di valore del tipo di dati di questo campo (ad esempio, int per un campo Struct con il tipo di dati IntegerType) DataTypes.createStructField(name, dataType, nullable) 4

Python

I tipi di dati SPARK SQL sono definiti nel pacchetto pyspark.sql.types. È possibile accedervi importando il pacchetto:

from pyspark.sql.types import *
Tipo SQL Tipo di dati Tipo di valore API per accedere o creare un tipo di dati
TINYINT ByteType int o long. (1) ByteType()
SMALLINT ShortType int o long. (1) ShortType()
INT IntegerType int o long IntegerType()
BIGINT LongType long (1) LongType()
FLOAT FloatType float (1) FloatType()
DOUBLE DoubleType float DoubleType()
DECIMAL(p,s) DecimalType Decimale. Decimale DecimalType()
STRINGA StringType string StringType()
BINARIO BinaryType Bytearray BinaryType()
BOOLEAN BooleanType bool BooleanType()
TIMESTAMP TimestampType datetime.datetime TimestampType()
TIMESTAMP_NTZ TimestampNTZType datetime.datetime TimestampNTZType()
DATE DateType datetime.date DateType()
intervallo anno-mese YearMonthIntervalType Non supportato Non supportato
intervallo di tempo del giorno DayTimeIntervalType datetime.timedelta DayTimeIntervalType (3)
MATRICE ArrayType list, tuple o array ArrayType(elementType, [containsNull]).(2)
MAPPA MapType dict MapType(keyType, valueType, [valueContainsNull]).(2)
STRUCT StructType elenco o tupla StructType(fields). field è un seq di StructField. (4)
StructField Tipo di valore del tipo di dati di questo campo (ad esempio, Int per un campo Struct con il tipo di dati IntegerType) StructField(name, dataType, [nullable]).(4)

R

Tipo SQL Tipo di dati Tipo di valore API per accedere o creare un tipo di dati
TINYINT ByteType intero (1) 'byte'
SMALLINT ShortType intero (1) 'short'
INT IntegerType integer 'integer'
BIGINT LongType intero (1) 'long'
FLOAT FloatType numeric (1) 'float'
DOUBLE DoubleType numeric 'double'
DECIMAL(p,s) DecimalType Non supportato Non supportato
STRINGA StringType character 'string'
BINARIO BinaryType raw 'binary'
BOOLEAN BooleanType logico 'bool'
TIMESTAMP TimestampType POSIXct 'timestamp'
TIMESTAMP_NTZ TimestampNTZType datetime.datetime TimestampNTZType()
DATE DateType Data 'date'
intervallo anno-mese YearMonthIntervalType Non supportato Non supportato
intervallo di tempo del giorno DayTimeIntervalType Non supportato Non supportato
MATRICE ArrayType vettore o elenco list(type='array', elementType=elementType, containsNull=[containsNull]).(2)
MAPPA MapType dell'ambiente di list(type='map', keyType=keyType, valueType=valueType, valueContainsNull=[valueContainsNull]).(2)
STRUCT StructType elenco denominato list(type='struct', fields=fields). fields è un seq di StructField. (4)
StructField Tipo di valore del tipo di dati di questo campo (ad esempio integer per un campo StructField con tipo di dati IntegerType) list(name=name, type=dataType, nullable=[nullable]).(4)

(1) I numeri vengono convertiti nel dominio in fase di esecuzione. Assicurarsi che i numeri siano compresi nell'intervallo.

(2) Il valore facoltativo è impostato su TRUE.

(3) Tipi di intervallo

  • YearMonthIntervalType([startField,] endField): rappresenta un intervallo di mese di anno costituito da un sottoinsieme contiguo dei campi seguenti:

    startField è il campo più a sinistra ed endField è il campo più a destra del tipo. I valori validi di startField e endField sono 0(MONTH) e 1(YEAR).

  • DayTimeIntervalType([startField,] endField): rappresenta un intervallo di tempo di giorno costituito da un subset contiguo dei campi seguenti:

    startField è il campo più a sinistra ed endField è il campo più a destra del tipo. I valori validi di startField e endField sono 0(DAY), 1(HOUR), 3(SECOND)2(MINUTE).

(4)StructType

  • StructType(fields) Rappresenta i valori con la struttura descritta da una sequenza, un elenco o una matrice di StructFields (campi). Non sono consentiti due campi con lo stesso nome.
  • StructField(name, dataType, nullable) Rappresenta un campo in un oggetto StructType. Il nome di un campo è indicato da name. Il tipo di dati di un campo è indicato da dataType. nullable indica se i valori di questi campi possono avere null valori. Si tratta dell'impostazione predefinita.