Tipos de datos

Se aplica a:check marked yes Databricks SQL check marked yes Databricks Runtime

Para consultar las reglas que rigen cómo se resuelven los conflictos entre los tipos de datos, consulte Reglas de tipo de datos de SQL.

Tipos de datos admitidos

Azure Databricks admite los siguientes tipos de datos:

Tipo de datos Descripción
BIGINT Representa números enteros con signo de 8 bytes.
BINARY Representa valores de secuencia de bytes.
BOOLEAN Representa valores booleanos.
DATE Representa valores que constan de campos de año, mes y día, sin una zona horaria.
DECIMAL(p,s) Representa números con precisión máxima (p) escala fija (s).
DOUBLE Representa números de punto flotante de doble precisión de 8 bytes.
FLOAT Representa números de punto flotante de precisión sencilla de 4 bytes.
INT Representa números enteros con signo de 4 bytes.
INTERVAL intervalQualifier Representa intervalos de tiempo en una escala de segundos o meses.
VOID Representa el valor NULL sin tipo.
SMALLINT Representa números enteros con signo de 2 bytes.
STRING Representa valores de cadenas de caracteres.
TIMESTAMP Representa valores que constan de campos de año, mes, día, hora, minuto y segundo, con la zona horaria local de la sesión.
TIMESTAMP_NTZ Representa valores que comprenden valores de los campos: año, mes, día, hora, minuto y segundo. Todas las operaciones se realizan sin tener en cuenta ninguna zona horaria.
TINYINT Representa números enteros con signo de 1 byte.
ARRAY <elementType> Representa valores que constan de una secuencia de elementos con el tipo de elementType.
MAP < keyType,valueType > Representa valores que constan de un conjunto de pares clave-valor.
STRUCT < [fieldName : fieldType [NOT NULL][COMMENT str][, …]] > Representa valores con la estructura descrita por una secuencia de campos.

Clasificación de los tipos de datos

Los tipos de datos se agrupan en las siguientes clases:

Asignaciones de lenguaje

Se aplica a:check marked yes Databricks Runtime

Scala

Los tipos de datos de Spark SQL se definen en el paquete org.apache.spark.sql.types. Para acceder a ellos, importe el paquete:

import org.apache.spark.sql.types._
Tipo SQL Tipo de datos Tipo de valor API para acceder al tipo de datos o crearlo
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
intervalo year-month YearMonthIntervalType java.time.Period YearMonthIntervalType (3)
intervalo day-time 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 es una secuencia de StructField. 4.
StructField Tipo de valor del tipo de datos de este campo (por ejemplo, Int para un elemento StructField con el tipo de datos IntegerType) StructField(name, dataType [, nullable]). 4

Java

Los tipos de datos de Spark SQL se definen en el paquete org.apache.spark.sql.types. Para acceder a un tipo de datos o crearlo, use los Factory Method proporcionados en org.apache.spark.sql.types.DataTypes.

Tipo SQL Tipo de datos Tipo de valor API para acceder al tipo de datos o crearlo
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).
STRING StringType String DataTypes.StringType
BINARY BinaryType byte[] DataTypes.BinaryType
BOOLEAN BooleanType boolean o 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
intervalo year-month YearMonthIntervalType java.time.Period YearMonthIntervalType (3)
intervalo day-time 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 es una lista o matriz de StructField. 4
StructField Tipo de valor del tipo de datos de este campo (por ejemplo, int para un elemento StructField con el tipo de datos IntegerType) DataTypes.createStructField(name, dataType, nullable) 4

Python

Los tipos de datos de Spark SQL se definen en el paquete pyspark.sql.types. Para acceder a ellos, importe el paquete:

from pyspark.sql.types import *
Tipo SQL Tipo de datos Tipo de valor API para acceder al tipo de datos o crearlo
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()
intervalo year-month YearMonthIntervalType No compatible No compatible
intervalo day-time DayTimeIntervalType datetime.timedelta DayTimeIntervalType (3)
ARRAY ArrayType lista, tupla o matriz ArrayType(elementType, [containsNull]).(2)
MAP MapType dict MapType(keyType, valueType, [valueContainsNull]).(2)
STRUCT StructType lista o tupla StructType(fields). field es una secuencia de StructField. (4)
StructField Tipo de valor del tipo de datos de este campo (por ejemplo, Int para un elemento StructField con el tipo de datos IntegerType) StructField(name, dataType, [nullable]).(4)

R

Tipo SQL Tipo de datos Tipo de valor API para acceder al tipo de datos o crearlo
TINYINT ByteType integer (1) ‘byte’
SMALLINT ShortType integer (1) ‘short’
INT IntegerType integer ‘integer’
BIGINT LongType integer (1) ‘long’
FLOAT FloatType numeric (1) ‘float’
DOUBLE DoubleType NUMERIC ‘double’
DECIMAL(p,s) DecimalType No compatible No compatible
STRING StringType character ‘string’
BINARY BinaryType raw ‘binary’
BOOLEAN BooleanType lógicos ‘bool’
TIMESTAMP TimestampType POSIXct ‘timestamp’
TIMESTAMP_NTZ TimestampNTZType datetime.datetime TimestampNTZType()
DATE DateType Date ‘date’
intervalo year-month YearMonthIntervalType No compatible No compatible
intervalo day-time DayTimeIntervalType No compatible No compatible
ARRAY ArrayType vector o lista list(type=’array’, elementType=elementType, containsNull=[containsNull]).(2)
MAP MapType Environment list(type=’map’, keyType=keyType, valueType=valueType, valueContainsNull=[valueContainsNull]).(2)
STRUCT StructType lista con nombre list(type=’struct’, fields=fields). fields es una secuencia de StructField. (4)
StructField Tipo de valor del tipo de datos de este campo (por ejemplo, integer para un elemento StructField con el tipo de datos IntegerType) list(name=name, type=dataType, nullable=[nullable]).(4)

(1) Los números se convierten en el dominio en tiempo de ejecución. Asegúrese de que los números estén dentro del intervalo.

(2) El valor opcional tiene como valor predeterminado TRUE.

(3) Tipos de intervalo

  • YearMonthIntervalType([startField,] endField): representa un intervalo de año y mes que se compone de un subconjunto contiguo de los campos siguientes:

    startField es el campo situado más a la izquierda y endField es el campo situado más a la derecha del tipo. Los valores válidos de startField y endField son 0(MONTH) y 1(YEAR).

  • DayTimeIntervalType([startField,] endField): representa un intervalo de día y hora que se compone de un subconjunto contiguo de los campos siguientes:

    startField es el campo situado más a la izquierda y endField es el campo situado más a la derecha del tipo. Los valores válidos de startField y endField son 0(DAY), 1(HOUR), 2(MINUTE), 3(SECOND).

(4)StructType

  • StructType(fields) Representa valores con la estructura descrita por una secuencia, lista o matriz de StructField (campos). No se permiten dos campos con el mismo nombre.
  • StructField(name, dataType, nullable): representa un campo en un StructType. El nombre de un campo se indica mediante name. El tipo de datos de un campo se indica mediante dataType. nullable indica si los valores de estos campos pueden tener valores null. Este es el valor predeterminado.