Tipos de dados

Aplica-se a: marca de seleção positiva SQL do Databricks marca de seleção positiva 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 Descrição
BIGINT Representa números inteiros com sinal de 8 bytes.
BINARY Representa valores de sequência de byte.
BOOLIANO 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.
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 um VARIANT com a estrutura descrita por uma sequência de campos.

Importante

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:

Mapeamentos de linguagem

Aplica-se a: verificação marcada como 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
BOOLIANO BooleanType Boolean 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)
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(name, dataType [, nullable]). 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
BOOLIANO 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)
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 longo (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()
BOOLIANO 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)
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 “inteiro”
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 character “cadeia de caracteres”
BINARY BinaryType raw “binário”
BOOLIANO BooleanType logical “bool”
TIMESTAMP TimestampType POSIXct “carimbo de data/hora”
TIMESTAMP_NTZ TimestampNTZType datetime.datetime TimestampNTZType()
DATE DateType Data “data”
intervalo de ano-mês YearMonthIntervalType Sem suporte Sem suporte
intervalo de dia-tempo DayTimeIntervalType Sem suporte Sem suporte
ARRAY ArrayType vetor ou 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 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 no domínio em runtime. Verifique se os números estão dentro do intervalo.

(2) O valor opcional é o padrão para 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.

Artigos relacionados