Partager via


Types de données

S’applique à :case cochée oui Databricks SQL case cochée oui Databricks Runtime

Pour connaître les règles qui régissent le mode de résolution des conflits entre les types de données, consultez Règles relatives aux types de données SQL.

Types de données pris en charge

Azure Databricks prend en charge les types de données suivants :

Type de données Description
BIGINT Représente des nombres entiers signés de 8 octets.
BINARY Représente des valeurs de séquence d’octets.
BOOLEAN Représente des valeurs booléennes.
DATE Représente les valeurs des champs Année, Mois et Jour, sans fuseau horaire.
DECIMAL(p,s) Représente des nombres avec une précision maximale p et une échelle fixe s.
DOUBLE Représente des nombres à virgule flottante double précision de 8 octets.
FLOAT Représente des nombres à virgule flottante simple précision de 4 octets.
INT Représente des nombres entiers signés de 4 octets.
INTERVAL intervalQualifier Représente des intervalles de temps sur une échelle de secondes ou de mois.
VOID Représente la valeur NULL non typée.
SMALLINT Représente des nombres entiers signés de 2 octets.
STRING Représente des valeurs de chaîne de caractères.
TIMESTAMP Représente les valeurs des champs Année, Mois, Jour, Heure, Minute et Seconde, avec le fuseau horaire local de la session.
TIMESTAMP_NTZ Représente les valeurs des champs Année, Mois, Jour, Heure, Minute et Seconde. Toutes les opérations sont effectuées sans prendre en compte aucun fuseau horaire.
TINYINT Représente des nombres entiers signés de 1 octet.
GEOGRAPHY(srid) Représente les valeurs géographiques dont le système de référence de coordonnées est géographique (longitude et latitude en degrés) et est défini par la srid valeur. Si srid est défini sur ANY, le système de référence de coordonnées n’est pas codé en dur dans le type et devient une valeur d’exécution.
GEOMETRY(srid) Représente les valeurs géométriques dont le système de référence de coordonnées est compris comme Cartsian et est défini par la srid valeur. Si srid est défini sur ANY, le système de référence de coordonnées n’est pas codé en dur dans le type et devient une valeur d’exécution.
ARRAY < elementType > Représente des valeurs qui composent une séquence d’éléments avec le type de elementType.
MAP < keyType,valueType > Représente des valeurs qui composent un jeu de paires clé-valeur.
STRUCT < [fieldName : fieldType [NOT NULL][COMMENT str][, ...]] > Représente des valeurs avec la structure décrite par une séquence de champs.
VARIANT Représente des données semi-structurées.
OBJECT Représente des valeurs dans un VARIANT avec la structure décrite par un ensemble de champs.

Important

Delta Lake ne prend pas en charge le type VOID.

Classification des types de données

Les types de données sont regroupés dans les classes suivantes :

Types numériques intégraux

Les types numériques intégraux représentent des nombres entiers :

Types numériques exacts

Les types numériques exacts représentent des nombres de base 10 :

Types de virgule flottante binaire

Les types à virgule flottante binaires utilisent des exposants et une représentation binaire pour couvrir une large plage de nombres :

Types numériques

Les types numériques représentent tous les types de données numériques :

Types de données date-heure

Les types date/heure représentent les composants de date et d’heure :

Types géospatiaux

Les types géospatiaux représentent des objets géométriques ou géographiques :

Types simples

Les types simples sont des types définis en tenant des valeurs singleton :

Types complexes

Les types complexes sont composés de plusieurs composants de types complexes ou simples :

Mappages de langage

S’applique à :case cochée oui Databricks Runtime

Scala

Les types de données Spark SQL sont définis dans le package org.apache.spark.sql.types. Pour y accéder, vous devez importer le package :

import org.apache.spark.sql.types._
Type SQL Type de données Type de valeur API pour consulter ou créer un type de données
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
intervalle année-mois YearMonthIntervalType java.time.Period YearMonthIntervalType (3)
intervalle jour-heure DayTimeIntervalType java.time.Duration DayTimeIntervalType (3)
GEOGRAPHY(srid) TypeDeGéographie org.apache.spark.unsafe.type.GeographyVal TypeGéographique
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 est une Seq de StructField. 4.
StructField Type de valeur du type de données de ce champ (par exemple, Int pour un StructField avec le type de données IntegerType) StructField(name, dataType [, nullable (peut être nul)]). 4
VARIANT VariantType org.apache.spark.unsafe.type.VariantVal VariantType
OBJECT Non pris en charge Non prise en charge Non prise en charge

Java

Les types de données Spark SQL sont définis dans le package org.apache.spark.sql.types. Pour consulter ou créer un type de données, utilisez les méthodes de fabrique fournies dans org.apache.spark.sql.types.DataTypes.

Type SQL Type de données Type de valeur API pour consulter ou créer un type de données
TINYINT ByteType byte ou Byte DataTypes.ByteType
SMALLINT ShortType short ou Short DataTypes.ShortType
INT IntegerType int ou Integer DataTypes.IntegerType
BIGINT LongType long ou Long DataTypes.LongType
FLOAT FloatType float ou Float DataTypes.FloatType
DOUBLE DoubleType double ou Double DataTypes.DoubleType
DECIMAL(p,s) DecimalType java.math.BigDecimal DataTypes.createDecimalType() DataTypes.createDecimalType(précision, échelle).
STRING StringType String DataTypes.StringType
BINARY BinaryType byte[] DataTypes.BinaryType
BOOLEAN BooleanType boolean ou 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
intervalle année-mois YearMonthIntervalType java.time.Period TypeIntervalAnnéeMois (3)
intervalle jour-heure DayTimeIntervalType java.time.Duration DayTimeIntervalType (3)
GEOGRAPHY(srid) Type de Géographie org.apache.spark.unsafe.type.GeographyVal GeographyType
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 est une liste ou un tableau de StructField. 4
StructField Type de valeur du type de données de ce champ (par exemple, Int pour un StructField avec le type de données IntegerType) DataTypes.createStructField(name, dataType, Nullable) 4
VARIANT VariantType org.apache.spark.unsafe.type.VariantVal VariantType
OBJECT Non pris en charge Non prise en charge Non prise en charge

Python

Les types de données Spark SQL sont définis dans le package pyspark.sql.types. Pour y accéder, vous devez importer le package :

from pyspark.sql.types import *
Type SQL Type de données Type de valeur API pour consulter ou créer un type de données
TINYINT ByteType int ou long. (1) ByteType()
SMALLINT ShortType int ou long. (1) ShortType()
INT IntegerType int ou 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()
intervalle année-mois YearMonthIntervalType Non prise en charge Non prise en charge
intervalle jour-heure DayTimeIntervalType datetime.timedelta DayTimeIntervalType (3)
GEOGRAPHY(srid) GeographyType GeographyVal GeographyType()
GEOMETRY(srid) GeometryType GeometryVal GeometryType()
ARRAY ArrayType list, tuple ou array ArrayType(elementType, [containsNull]). (2)
MAP MapType dict MapType(keyType, valueType, [valueContainsNull]). (2)
STRUCT StructType list ou tuple StructType(fields). field est un Seq de StructField. (4)
StructField Type de valeur du type de données de ce champ (par exemple, Int pour un StructField avec le type de données IntegerType) StructField(name, dataType, [nullable]). (4)
VARIANT VariantType VariantVal VariantType()
OBJECT Non pris en charge Non prise en charge Non prise en charge

R

Type SQL Type de données Type de valeur API pour consulter ou créer un type de données
TINYINT ByteType entier (1) 'byte'
SMALLINT ShortType entier (1) 'short'
INT IntegerType integer 'integer'
BIGINT LongType entier (1) 'long'
FLOAT FloatType numérique (1) 'float'
DOUBLE DoubleType numeric 'double'
DECIMAL(p,s) DecimalType Non prise en charge Non prise en charge
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'
intervalle année-mois YearMonthIntervalType Non prise en charge Non prise en charge
intervalle jour-heure DayTimeIntervalType Non prise en charge Non prise en charge
GEOGRAPHY(srid) Non prise en charge Non prise en charge Non prise en charge
GEOMETRY(srid) Non prise en charge Non prise en charge Non prise en charge
ARRAY ArrayType vector ou list list(type='array', elementType=elementType, containsNull=[containsNull]). (2)
MAP MapType environment list(type='map', keyType=keyType, valueType=valueType, valueContainsNull=[valueContainsNull]). (2)
STRUCT StructType Liste nommée liste(type='struct', champs=fields). fields est une Seq de StructField. (4)
StructField Type de valeur du type de données de ce champ (par exemple, integer pour un StructField avec le type de données IntegerType) list(name=name, type=dataType, nullable=[nullable]). (4)
VARIANT Non pris en charge Non prise en charge Non prise en charge
OBJECT Non pris en charge Non prise en charge Non prise en charge

(1) Les nombres sont convertis en domaine au moment de l’exécution. Assurez-vous que les nombres se trouvent dans la plage.

(2) La valeur facultative a pour valeur par défaut TRUE.

(3) Types d’intervalles

  • YearMonthIntervalType([startField,] endField) : représente un intervalle année-mois qui est constitué d’un sous-ensemble contigu des champs suivants :

    startField est le champ le plus à gauche et endField est le champ le plus à droite du type. Les valeurs valides de startField et endField sont 0(MONTH) et 1(YEAR).

  • DayTimeIntervalType([startField,] endField) : représente un intervalle jour-heure qui est constitué d’un sous-ensemble contigu des champs suivants :

    startField est le champ le plus à gauche et endField est le champ le plus à droite du type. Les valeurs valides de startField et endField sont 0(DAY), 1(HOUR), 2(MINUTE) et 3(SECOND).

(4)StructType

  • StructType(fields) Représente des valeurs avec la structure décrite par une séquence, une liste ou un tableau de champs StructField. Deux champs portant le même nom ne sont pas autorisés.
  • StructField(name, dataType, nullable) Représente un champ dans un StructType. Le nom d’un champ est indiqué par name. Le type de données d’un champ est indiqué par dataType. nullable indique si les valeurs de ces champs peuvent avoir des valeurs null. Il s’agit du paramètre par défaut.