Compartilhar via


Tipos de dados

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

Para conhecer as regras que regem como os conflitos entre os tipos de dados são resolvidos, confira Regras de tipos de dados SQL.

Tipos de dados com suporte

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

Tipo de Dados Description
BIGINT Representa números inteiros com sinal de 8 bytes.
BINARY Representa valores de sequência de byte.
BOOLEAN Representa valores Boolianos.
DATE Representa valores de campos de ano, mês e dia, sem um fuso horário.
DECIMAL(p,s) Representa os números com precisão p máxima e escala s fixa.
DOUBLE Representa números de ponto flutuante de 8 bytes com precisão dupla.
FLOAT Representa números de ponto flutuante de 4 bytes com precisão simples.
INT Representa números inteiros com sinal de 4 bytes.
INTERVAL intervalQualifier Representa intervalos de tempo em uma escala de segundos ou meses.
VOID Representa o NULL não tipado.
SMALLINT Representa números inteiros com sinal de 2 bytes.
STRING Representa valores de cadeia de caracteres.
TIMESTAMP Representa valores de campos de ano, mês, dia, hora, minuto e segundo, com o fuso horário local da sessão.
TIMESTAMP_NTZ Representa valores que compõem valores de campos ano, mês, dia, hora, minuto e segundo. Todas as operações são executadas sem levar em conta nenhum fuso horário.
TINYINT Representa números inteiros com sinal de 1 byte.
GEOGRAPHY(srid) Representa valores de geografia cujo sistema de referência de coordenadas é geográfico (longitude e latitude em graus) e é definido pelo srid valor. Se srid for definido como ANY, o sistema de referência de coordenadas não é codificado no tipo e se torna um valor em tempo de execução.
GEOMETRY(srid) Representa valores de geometria cujo sistema de referência de coordenadas é entendido como Cartsian e é definido pelo srid valor. Se srid for definido como ANY, o sistema de referência de coordenadas não é codificado no tipo e se torna um valor em tempo de execução.
ElementType ARRAY <> Representa valores que compõem uma sequência de elementos com o tipo elementType.
MAP < keyType,valueType > Representa valores que incluem 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 uma VARIANT com a estrutura descrita por um conjunto de campos.

Important

O Delta Lake não dá suporte para o tipo VOID.

Classificação de tipo de dados

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

Tipos numéricos integrais

Tipos numéricos integrais representam números inteiros:

Tipos numéricos exatos

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

Tipos de ponto flutuante binário

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

Tipos numéricos

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

Tipos de data e hora

Os tipos de data e hora representam 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 meio da retenção de valores singleton:

Tipos complexos

Tipos complexos são compostos por vários componentes de tipos complexos ou simples:

Mapeamentos de idioma

Aplica-se a:com marcação de verificação sim Databricks Runtime

Scala

Tipos de dados de SQL do Spark são definidos no pacote org.apache.spark.sql.types. Você pode acessá-los 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 de ano-mês YearMonthIntervalType java.time.Period YearMonthIntervalType (3)
intervalo de dia-tempo DayTimeIntervalType java.time.Duration DayTimeIntervalType (3)
GEOGRAPHY(srid) TipoDeGeografia org.apache.spark.unsafe.type.GeographyVal TipoGeografia
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). o campo é uma Seq de StructField. 4.
StructField O tipo de valor do tipo de dados desse campo (por exemplo, Int para um StructField com o tipo de dados IntegerType) StructField(nome, tipo de dado [, anulável]). 4
VARIANT VariantType org.apache.spark.unsafe.type.VariantVal VariantType
OBJECT Sem suporte Sem suporte Sem suporte

Java

Tipos de dados de SQL do Spark 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 no 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 short ou Short DataTypes.ShortType
INT IntegerType int ou Inteiro DataTypes.IntegerType
BIGINT LongType longo ou Longo DataTypes.LongType
FLOAT FloatType derivar ou Derivar DataTypes.FloatType
DOUBLE DoubleType duplo ou Duplo 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 booliana ou Booliana 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 de ano-mês YearMonthIntervalType java.time.Period YearMonthIntervalType (3)
intervalo de dia-tempo 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). os campos são uma lista ou raiz de StructField. 4
StructField O tipo de valor do tipo de dados desse campo (por exemplo, int para um StructField com o tipo de dados IntegerType) DataTypes.createStructField(name, dataType, nullable) 4
VARIANT VariantType org.apache.spark.unsafe.type.VariantVal VariantType
OBJECT Sem suporte Sem suporte Sem suporte

Python

Tipos de dados de SQL do Spark são definidos no pacote pyspark.sql.types. Você pode acessá-los 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 longo. (1) ByteType()
SMALLINT ShortType int ou longo. (1) ShortType()
INT IntegerType int ou longo IntegerType()
BIGINT LongType long (1) LongType()
FLOAT FloatType float (1) FloatType()
DOUBLE DoubleType derivar DoubleType()
DECIMAL(p,s) DecimalType decimal.Decimal DecimalType()
STRING StringType cadeia 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 de ano-mês YearMonthIntervalType Sem suporte Sem suporte
intervalo de dia-tempo DayTimeIntervalType datetime.timedelta DayTimeIntervalType (3)
GEOGRAPHY(srid) TipoDeGeografia GeographyVal GeographyType()
GEOMETRY(srid) GeometryType GeometryVal 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). o campo é uma Seq de StructField. (4)
StructField O tipo de valor do tipo de dados desse campo (por exemplo, Int para um StructField com o tipo de dados IntegerType) StructField(name, dataType, [nullable]). (4)
VARIANT VariantType VariantVal VariantType()
OBJECT Sem suporte Sem suporte Sem suporte

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 inteiro 'integer'
BIGINT LongType inteiro (1) 'long'
FLOAT FloatType numérico (1) 'float'
DOUBLE DoubleType numeric 'double'
DECIMAL(p,s) DecimalType Sem suporte Sem suporte
STRING StringType caractere 'string'
BINARY BinaryType raw 'binary'
BOOLEAN BooleanType logical 'bool'
TIMESTAMP TimestampType POSIXct 'timestamp'
TIMESTAMP_NTZ TimestampNTZType datetime.datetime TimestampNTZType()
DATE DateType Date 'date'
intervalo de ano-mês YearMonthIntervalType Sem suporte Sem suporte
intervalo de dia-tempo DayTimeIntervalType Sem suporte Sem suporte
GEOGRAPHY(srid) Sem suporte Sem suporte Sem suporte
GEOMETRY(srid) Sem suporte Sem suporte Sem suporte
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 nomeada list(type='struct', fields=fields). o campo é uma Seq de StructField. (4)
StructField O tipo de valor do tipo de dados desse campo (por exemplo, inteiro para um StructField com o tipo de dados IntegerType) list(name=name, type=dataType, nullable=[nullable]). (4)
VARIANT Sem suporte Sem suporte Sem suporte
OBJECT Sem suporte Sem suporte Sem suporte

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

(2) O valor opcional usa como padrão TRUE.

(3) Tipos de intervalo

  • YearMonthIntervalType([startField,] endField): representa um intervalo de ano/mês que é feito de um subconjunto contíguo dos seguintes campos:

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

  • DayTimeIntervalType([startField,] endField): representa um intervalo de dia-horário que é feito de um subconjunto contíguo dos seguintes campos:

    startField é o campo mais à esquerda e endField é o campo mais à direita do tipo. 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 raiz de StructFields (campos). Dois campos com o mesmo nome não são permitidos.
  • StructField(name, dataType, nullable) Representa um campo em um StructType. O nome de um campo é indicado por name. O tipo de dados de um campo é indicado por dataType. nullable indica se os valores desses campos podem ter valores null. Esse é o padrão.