Types de données

S’applique à :case marquée oui Databricks SQL case marqué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 huit 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 des valeurs comprenant 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.
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.

Important

Delta Lake ne prend pas en charge les types VOID et INTERVAL.

Classification des types de données

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

Mappages de langage

S’applique à :oui coché 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 Court 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)
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]). 4

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(precision, scale).
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 YearMonthIntervalType (3)
intervalle jour-heure DayTimeIntervalType java.time.Duration DayTimeIntervalType (3)
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

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 pris en charge Non pris en charge
intervalle jour-heure DayTimeIntervalType datetime.timedelta DayTimeIntervalType (3)
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)

R

Type SQL Type de données Type de valeur API pour consulter ou créer un type de données
TINYINT ByteType integer (1) ‘byte’
SMALLINT ShortType integer (1) ‘short’
INT IntegerType entier ‘integer’
BIGINT LongType integer (1) ‘long’
FLOAT FloatType numeric (1) ‘float’
DOUBLE DoubleType numeric ‘double’
DECIMAL(p,s) DecimalType Non pris en charge Non pris en charge
STRING StringType caractère ‘string’
BINARY BinaryType raw ‘binary’
BOOLEAN BooleanType logique ‘bool’
TIMESTAMP TimestampType POSIXct ‘timestamp’
TIMESTAMP_NTZ TimestampNTZType datetime.datetime TimestampNTZType()
DATE DateType Date ‘date’
intervalle année-mois YearMonthIntervalType Non pris en charge Non pris en charge
intervalle jour-heure DayTimeIntervalType Non pris en charge Non pris en charge
ARRAY ArrayType vector ou list list(type=’array’, elementType=elementType, containsNull=[containsNull]).(2)
MAP MapType Environnement list(type=’map’, keyType=keyType, valueType=valueType, valueContainsNull=[valueContainsNull]).(2)
STRUCT StructType liste nommée list(type=’struct’, fields=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)

(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 est définie par défaut sur TRUE.

(3) Types d’intervalle

  • 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 de la valeur par défaut.