Partilhar via


Tipos de dados

Aplica-se a:seleção marcada sim Databricks SQL seleção marcada sim Databricks Runtime

Para obter regras que regem como os conflitos entre tipos de dados são resolvidos, consulte Regras de tipo de dados SQL.

Tipos de dados suportados:

O Azure Databricks dá suporte aos seguintes tipos de dados:

Tipo de dados Description
BIGINT Representa números inteiros assinados de 8 bytes.
BINARY Representa valores de sequência de bytes.
BOOLEAN Representa valores booleanos.
DATE Representa valores que compreendem valores de campos ano, mês e dia, sem fuso horário.
DECIMAL(p,s) Representa números com precisão p máxima e escala sfixa.
DOUBLE Representa números de ponto flutuante de precisão dupla de 8 bytes.
FLOAT Representa números de ponto flutuante de precisão única de 4 bytes.
INT Representa números inteiros assinados de 4 bytes.
INTERVALOintervaloQualificador Representa intervalos de tempo em uma escala de segundos ou meses.
VOID Representa o NULL não tipado.
SMALLINT Representa números inteiros assinados de 2 bytes.
STRING Representa valores de cadeia de caracteres.
TIMESTAMP Representa valores que compreendem valores de campos ano, mês, dia, hora, minuto e segundo, com o fuso horário local da sessão.
TIMESTAMP_NTZ Representa valores que compreendem valores de campos ano, mês, dia, hora, minuto e segundo. Todas as operações são realizadas sem ter em conta qualquer fuso horário.
TINYINT Representa números inteiros assinados de 1 byte.
GEOGRAFIA(srid) Representa valores geográficos cujo sistema de referência de coordenadas é geográfico (longitude e latitude em graus) e é definido pelo srid valor. Se srid estiver definido como ANY, o sistema de referência de coordenadas não é codificado no tipo e torna-se um valor em tempo de execução.
GEOMETRIA (srid) Representa valores geométricos cujo sistema de referência de coordenadas é entendido como Cartesiano e é definido pelo valor srid. Se srid estiver definido como ANY, o sistema de referência de coordenadas não é codificado no tipo e torna-se um valor em tempo de execução.
ARRAY < elementType > Representa valores que compreendem uma sequência de elementos com o tipo de elementType.
MAP tipoChave,tipoValor<> Representa valores que compreendem um conjunto de pares chave-valor.
STRUCT < [fieldName : fieldType [NOT NULL][COMMENT str][, ...]] > Representa valores com a estrutura descrita por uma sequência de campos.
VARIANT Representa dados semiestruturados.
OBJECT Representa valores em um VARIANT com a estrutura descrita por um conjunto de campos.

Important

Delta Lake não suporta o VOID tipo.

Classificação do tipo de dados

Os tipos de dados são agrupados nas seguintes classes:

Tipos numéricos integrais

Os tipos numéricos integrais representam números inteiros:

Tipos numéricos exatos

Os tipos numéricos exatos representam números de base 10:

Tipos binários de ponto flutuante

Os tipos binários de ponto flutuante usam expoentes e uma representação binária para cobrir uma grande variedade de números:

Tipos numéricos

Os tipos numéricos representam todos os tipos de dados numéricos:

Tipos de data-hora

Os tipos de data e hora representam os componentes de data e hora:

Tipos geoespaciais

Os tipos geoespaciais representam objetos geométricos ou geográficos:

Tipos simples

Tipos simples são tipos definidos por manter valores singleton:

Tipos complexos

Os tipos complexos são compostos por múltiplos componentes de tipos complexos ou simples:

Mapeamentos linguísticos

Aplica-se a: assinalado como sim Databricks Runtime

Scala

Os tipos de dados do Spark SQL são definidos no pacote org.apache.spark.sql.types. Você acede a eles importando o pacote.

import org.apache.spark.sql.types._
Tipo SQL Tipo de dados Tipo de valor API para acessar ou criar tipo de dados
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 booleano BooleanType
TIMESTAMP TimestampType java.sql.Timestamp TimestampType
TIMESTAMP_NTZ TimestampNTZType java.time.LocalDateTime TimestampNTZType
DATE DateType java.sql.Date DateType
intervalo ano-mês YearMonthIntervalType java.time.Period Tipo de Intervalo AnoMês (3)
intervalo diurno DayTimeIntervalType java.time.Duration DayTimeIntervalType (3)
GEOGRAFIA(srid) TipoGeografia org.apache.spark.unsafe.type.GeographyVal Tipo de Geografia
GEOMETRIA (srid) GeometryType org.apache.spark.unsafe.type.GeometryVal GeometryType
ARRAY ArrayType scala.collection.Seq ArrayType(elementType [, containsNull]). (2)
MAP MapType scala.collection.Map MapType(tipoChave, tipoValor [, valorContémNulo]). (2)
STRUCT StructType org.apache.spark.sql.Row StructType(fields). "fields é uma sequência de StructField." 4.
StructField O tipo de valor do tipo de dados deste campo(Por exemplo, Int para um StructField com o tipo de dados IntegerType) StructField(nome, tipoDeDados [, nulo]). 4
VARIANT VariantType org.apache.spark.unsafe.type.VariantVal VariantType
OBJECT Não suportado Não suportado Não suportado

Java

Os tipos de dados do Spark SQL são definidos no pacote org.apache.spark.sql.types. Para acessar ou criar um tipo de dados, use os métodos de fábrica fornecidos em org.apache.spark.sql.types.DataTypes.

Tipo SQL Tipo de dados Tipo de valor API para acessar ou criar tipo de dados
TINYINT ByteType byte ou Byte DataTypes.ByteType
SMALLINT ShortType curto ou Curto DataTypes.ShortType
INT IntegerType int ou inteiro DataTypes.IntegerType
BIGINT LongType longo ou longo DataTypes.LongType
FLOAT FloatType float ou Float DataTypes.FloatType
DOUBLE DoubleType duplo ou Double DataTypes.DoubleType
DECIMAL(p,s) DecimalType java.math.BigDecimal DataTypes.createDecimalType() DataTypes.createDecimalType(precisão, escala).
STRING StringType String DataTypes.StringType
BINARY BinaryType byte[] DataTypes.BinaryType
BOOLEAN BooleanType booleano 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
intervalo ano-mês YearMonthIntervalType java.time.Period TipoIntervaloAnoMês (3)
intervalo diurno DayTimeIntervalType java.time.Duration DayTimeIntervalType (3)
GEOGRAFIA(srid) TipoGeografia org.apache.spark.unsafe.type.GeographyVal Tipo de Geografia
GEOMETRIA (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 é uma Lista ou matriz de StructField. 4
StructField O tipo de valor do tipo de dados deste campo (Por exemplo, int para um StructField com o tipo de dados IntegerType) DataTypes.createStructField(nome, tipoDeDados, anulável) 4
VARIANT VariantType org.apache.spark.unsafe.type.VariantVal VariantType
OBJECT Não suportado Não suportado Não suportado

Python

Os tipos de dados do Spark SQL são definidos no pacote pyspark.sql.types. Você acede a eles importando o pacote.

from pyspark.sql.types import *
Tipo SQL Tipo de dados Tipo de valor API para acessar ou criar tipo de dados
TINYINT ByteType int ou long. (1) ByteType()
SMALLINT ShortType int ou long. (1) ShortType()
INT IntegerType int ou long IntegerType()
BIGINT LongType longo (1) LongType()
FLOAT FloatType float (1) FloatType()
DOUBLE DoubleType float DoubleType()
DECIMAL(p,s) DecimalType decimal.Decimal DecimalType()
STRING StringType cadeia (de caracteres) 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 ano-mês YearMonthIntervalType Não suportado Não suportado
intervalo diurno DayTimeIntervalType datetime.timedelta DayTimeIntervalType (3)
GEOGRAFIA(srid) TipoDeGeografia GeografiaVal GeographyType()
GEOMETRIA (srid) GeometryType GeometriaVal GeometryType()
ARRAY ArrayType lista, tupla ou matriz ArrayType(elementType, [containsNull]). (2)
MAP MapType dict MapType(keyType, valueType, [valueContainsNull]).(2)
STRUCT StructType lista ou tupla StructType(fields). field é um Seq de StructField. (4)
StructField O tipo de valor do tipo de dados deste campo (Por exemplo, Int para um StructField com o tipo de dados IntegerType) StructField(nome, dataType, [anulável]). (4)
VARIANT VariantType VariantVal VariantType()
OBJECT Não suportado Não suportado Não suportado

R

Tipo SQL Tipo de dados Tipo de valor API para acessar ou criar tipo de dados
TINYINT ByteType inteiro (1) 'byte'
SMALLINT ShortType inteiro (1) 'short'
INT IntegerType número inteiro 'integer'
BIGINT LongType inteiro (1) 'long'
FLOAT FloatType numérico (1) 'float'
DOUBLE DoubleType numeric 'double'
DECIMAL(p,s) DecimalType Não suportado Não suportado
STRING StringType carácter 'string'
BINARY BinaryType raw 'binary'
BOOLEAN BooleanType logical 'bool'
TIMESTAMP TimestampType POSIXct 'timestamp'
TIMESTAMP_NTZ TimestampNTZType datetime.datetime TimestampNTZType()
DATE DateType Date 'date'
intervalo ano-mês YearMonthIntervalType Não suportado Não suportado
intervalo diurno DayTimeIntervalType Não suportado Não suportado
GEOGRAFIA(srid) Não suportado Não suportado Não suportado
GEOMETRIA (srid) Não suportado Não suportado Não suportado
ARRAY ArrayType vetor ou lista list(type='array', elementType=elementType, containsNull=[containsNull]). (2)
MAP MapType ambiente list(type='map', keyType=keyType, valueType=valueType, valueContainsNull=[valueContainsNull]). (2)
STRUCT StructType Lista de nomeados lista(tipo='struct', campos=campos). "fields é uma sequência de StructField." (4)
StructField O tipo de valor do tipo de dados deste campo (por exemplo, inteiro para um StructField com o tipo de dados IntegerType) list(name=name, type=dataType, nullable=[nullable]). (4)
VARIANT Não suportado Não suportado Não suportado
OBJECT Não suportado Não suportado Não suportado

(1) Os números são convertidos para o domínio em tempo de execução. Certifique-se de que os números estão dentro do intervalo.

(2) O valor opcional por padrão é TRUE.

(3) Tipos de intervalo

  • YearMonthIntervalType([startField,] endField): Representa um intervalo ano-mês constituído por um subconjunto contíguo dos seguintes campos:

    startField é o campo mais à esquerda e endField é o campo mais à direita do tipo. Os valores válidos de startField e endField são 0(MONTH) e 1(YEAR).

  • DayTimeIntervalType([startField,] endField): Representa um intervalo de tempo diurno constituído por um subconjunto contíguo dos seguintes campos:

    startField é o campo mais à esquerda e endField é o campo mais à direita do tipo. Os valores válidos de startField e endField são 0(DAY), 1(HOUR), 2(MINUTE), 3(SECOND).

(4)StructType

  • StructType(fields) Representa valores com a estrutura descrita por uma sequência, lista ou matriz de StructFields (campos). Não são permitidos dois campos com o mesmo nome.
  • StructField(name, dataType, nullable) Representa um campo num StructType. O nome de um campo é indicado por name. O tipo de dados de um campo é indicado por dataType. Indica-se com nullable se os valores desses campos podem ter valores de null. Esta é a predefinição.