Tipos de dados
Aplica-se a: SQL do Databricks 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:
- Tipos numéricos inteiros representam números inteiros:
- Tipos numéricos exatos representam números de base 10:
- Tipos binários de ponto flutuante usam expoentes e uma representação binária para cobrir um grande intervalo de números:
- Tipos numéricos representam todos os tipos de dados numéricos:
- Tipos de data/hora representam os componentes de data e hora:
- Tipos simples são tipos definidos por conter valores singleton:
- Tipos complexos são tipos compostos de vários componentes de tipos simples ou complexos:
Mapeamentos de linguagem
Aplica-se a: 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 eendField
é o campo mais à direita do tipo. Valores válidos destartField
eendField
são0(MONTH)
e1(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 eendField
é o campo mais à direita do tipo. Valores válidos destartField
eendField
são0(DAY)
,1(HOUR)
,2(MINUTE)
,3(SECOND)
.
(4) StructType
StructType(fields)
Representa valores com a estrutura descrita por uma sequência, lista ou raiz deStructField
s (campos). Dois campos com o mesmo nome não são permitidos.StructField(name, dataType, nullable)
Representa um campo em umStructType
. O nome de um campo é indicado porname
. O tipo de dados de um campo é indicado por dataType.nullable
indica se os valores desses campos podem ter valoresnull
. Esse é o padrão.