Condividi tramite


Tipi 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 Description
BIGINT Rappresenta numeri interi con segno a 8 byte.
BINARY 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.
STRING Rappresenta valori di 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.
GEOGRAPHY(srid) Rappresenta i valori geografici il cui sistema di riferimento delle coordinate è geografico (longitudine e latitudine in gradi) ed è definito dal valore srid. Se srid è impostato, il sistema di riferimento delle coordinate non è codificato staticamente nel tipo e diventa un valore di runtime.
GEOMETRY(srid) Rappresenta i valori geometrici il cui sistema di riferimento delle coordinate è inteso come Cartesiano ed è definito dal valore srid. Se srid è impostato, il sistema di riferimento delle coordinate non è codificato staticamente nel tipo e diventa un valore di runtime.
ARRAY < tipoElemento > 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 < [nomeCampo : tipoCampo [NON NULLO][COMMENTO str][, ...]] > Rappresenta i valori con la struttura descritta da una sequenza di campi.
VARIANT Rappresenta dati semistrutturati.
OBJECT Rappresenta i valori in un VARIANT con la struttura descritta da un set di campi.

Important

Delta Lake non supporta il VOID tipo.

Classificazione dei tipi di dati

I tipi di dati vengono raggruppati nelle classi seguenti:

Tipi numerici integrali

I tipi numerici integrali rappresentano numeri interi:

Tipi numerici esatti

I tipi numerici esatti rappresentano numeri base 10:

Tipi a virgola mobile binaria

I tipi a virgola mobile binaria usano esponenti e una rappresentazione binaria per coprire un'ampia gamma di numeri:

Tipi numerici

I tipi numerici rappresentano tutti i tipi di dati numerici:

Tipi di data e ora

I tipi di data e ora rappresentano componenti di data e ora:

Tipi geospaziali

I tipi geospaziali rappresentano oggetti geometrici o geografici:

Tipi semplici

I tipi semplici sono tipi definiti con valori singleton:

Tipi complessi

I tipi complessi sono costituiti da più componenti di tipi complessi o semplici:

Mappe linguistiche

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 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
intervallo anno-mese YearMonthIntervalType java.time.Period YearMonthIntervalType (3)
intervallo di tempo del giorno DayTimeIntervalType java.time.Duration DayTimeIntervalType (3)
GEOGRAPHY(srid) TipoGeografia org.apache.spark.unsafe.type.GeographyVal GeographyType
GEOMETRY(srid) GeometryType org.apache.spark.unsafe.type.GeometryVal GeometryType
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). fields è una sequenza 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(nome, tipoDiDato [, nullo]). 4
VARIANT VariantType org.apache.spark.unsafe.type.VariantVal VariantType
OBJECT Non supportato Non supportato Non supportato

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 corto o breve DataTypes.ShortType
INT IntegerType int o Integer DataTypes.IntegerType
BIGINT LongType long o Long DataTypes.LongType
FLOAT FloatType float o tipo Float DataTypes.FloatType
DOUBLE DoubleType doppio o 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 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)
GEOGRAPHY(srid) GeographyType org.apache.spark.unsafe.type.GeographyVal TipoGeografia
GEOMETRY(srid) GeometryType org.apache.spark.unsafe.type.GeometryVal GeometryType
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). 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
VARIANT VariantType org.apache.spark.unsafe.type.VariantVal VariantType
OBJECT Non supportato Non supportato Non supportato

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 decimal.Decimal DecimalType()
STRING StringType string 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()
intervallo anno-mese YearMonthIntervalType Non supportato Non supportato
intervallo di tempo del giorno DayTimeIntervalType datetime.timedelta TipoIntervalloDiurno (3)
GEOGRAPHY(srid) TipoGeografia GeographyVal GeographyType()
GEOMETRY(srid) GeometryType GeometryVal GeometryType()
ARRAY ArrayType lista, tupla o array ArrayType(elementType, [containsNull]). (2)
MAP MapType dict MapType(keyType, valueType, [valueContainsNull]). (2)
STRUCT StructType elenco o tupla StructType(fields). field è una sequenza 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)
VARIANT VariantType VariantVal VariantType()
OBJECT Non supportato Non supportato Non supportato

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
STRING StringType character 'string'
BINARY BinaryType raw 'binary'
BOOLEAN BooleanType logical 'bool'
TIMESTAMP TimestampType POSIXct 'timestamp'
TIMESTAMP_NTZ TimestampNTZType datetime.datetime TimestampNTZType()
DATE DateType Date 'date'
intervallo anno-mese YearMonthIntervalType Non supportato Non supportato
intervallo di tempo del giorno DayTimeIntervalType Non supportato Non supportato
GEOGRAPHY(srid) Non supportato Non supportato Non supportato
GEOMETRY(srid) Non supportato Non supportato Non supportato
ARRAY ArrayType vettore o elenco list(type='array', elementType=elementType, containsNull=[containsNull]). (2)
MAP MapType environment list(type='map', keyType=keyType, valueType=valueType, valueContainsNull=[valueContainsNull]). (2)
STRUCT StructType lista nominata list(type='struct', fields=fields). fields è una sequenza 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)
VARIANT Non supportato Non supportato Non supportato
OBJECT Non supportato Non supportato Non supportato

(1) I numeri vengono convertiti nel dominio in fase di esecuzione. Accertarsi che i numeri rientrino nell'intervallo specificato.

(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), 2(MINUTE), 3(SECOND).

(4)StructType

  • StructType(fields) Rappresenta i valori con la struttura descritta da una sequenza, un elenco o una matrice di StructField(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 valori null. Si tratta dell'impostazione predefinita.