Типы данных

Область применения:проверка помечены да Databricks SQL проверка помечены да Databricks Runtime

Правила, определяющие разрешение конфликтов между типами данных, см . в правилах типов данных SQL.

Поддерживаемые типы данных

Azure Databricks поддерживает следующие типы данных:

Тип данных Description
BIGINT Представляет 8-байтовые целые числа со знаком.
BINARY Представляет значения последовательности байтов.
BOOLEAN Представляет логические значения.
DATE Значения, содержащие значения полей «год», «месяц» и «день», без часового пояса.
DECIMAL(p,s) Числа с указанной максимальной точностью p и фиксированным масштабом s.
DOUBLE 8-байтовые числа двойной точности с плавающей точкой.
FLOAT 4-байтовые числа одиночной точности с плавающей точкой.
INT 4-байтовые целые числа со знаком.
INTERVAL intervalQualifier Представляет интервалы времени либо в секундах, либо в месяцах.
VOID Нетипизированное значение NULL.
SMALLINT 2-байтовые целые числа со знаком.
STRING Символьные строки.
TIMESTAMP Значения, содержащие значения полей "год", "месяц", "день", "час", "минута" и "секунда", используя локальный часовой пояс сеанса.
TIMESTAMP_NTZ Представляет значения полей года, месяца, дня, часа, минуты и секунды. Все операции выполняются без учета часового пояса.
TINYINT Представляет 1-байтовые целые числа со знаком.
ARRAY <elementType> Значения, составляющие последовательность элементов с типом elementType.
MAP < keyType,valueType > Значения, составляющие набор пар "ключ-значение".
STRUCT < [fieldName: fieldType [NOT NULL][COMMENT str][, ...]] > Значения, которые описывают структуру в виде последовательности полей.

Внимание

Delta Lake не поддерживает VOID и INTERVAL типы.

Классификация типов данных

Типы данных сгруппированы по следующим категориям:

Сопоставления языков

Область применения:проверка помечены да Databricks Runtime

Scala

Типы данных Spark SQL определены в пакете org.apache.spark.sql.types. Доступ к ним осуществляется путем импорта пакета:

import org.apache.spark.sql.types._
Тип SQL Тип данных Тип значения API для доступа или создания типа данных
TINYINT ByteType Байт ByteType
SMALLINT ShortType Короткие ShortType
INT IntegerType Int IntegerType
BIGINT LongType Long LongType
FLOAT FloatType Тип с плавающей запятой FloatType
DOUBLE DoubleType Двойной DoubleType
DECIMAL(p,s) DecimalType java.math.BigDecimal DecimalType
STRING StringType Строка StringType
BINARY BinaryType Array[Byte] BinaryType
BOOLEAN BooleanType Логический BooleanType
TIMESTAMP TimestampType java.sql.Timestamp TimestampType
TIMESTAMP_NTZ TimestampNTZType java.time.LocalDateTime TimestampNTZType
DATE DateType java.sql.Date DateType
Интервал года в месяц YearMonthIntervalType java.time.Period YearMonthIntervalType (3)
интервал дня 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 — это Seq в StructFields. 4.
StructField Тип значения типа данных этого поля (например, Int для StructField с типом данных IntegerType). StructField(name, dataType [, nullable]). 4

Java

Типы данных Spark SQL определены в пакете org.apache.spark.sql.types. Чтобы получить доступ к типу данных или создать его, используйте фабричные методы, предоставленные в org.apache.spark.sql.types.DataTypes.

Тип SQL Тип данных Тип значения API для доступа или создания типа данных
TINYINT ByteType byte или Byte DataTypes.ByteType
SMALLINT ShortType short или Short DataTypes.ShortType
INT IntegerType int или Integer DataTypes.IntegerType
BIGINT LongType long или Long DataTypes.LongType
FLOAT FloatType float или Float DataTypes.FloatType
DOUBLE DoubleType double или Double DataTypes.DoubleType
DECIMAL(p,s) DecimalType java.math.BigDecimal DataTypes.createDecimalType() DataTypes.createDecimalType(precision, scale).
STRING StringType Строка DataTypes.StringType
BINARY BinaryType byte[] DataTypes.BinaryType
BOOLEAN BooleanType boolean или 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
Интервал года в месяц YearMonthIntervalType java.time.Period YearMonthIntervalType (3)
интервал дня 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 — это List или array в StructField. 4
StructField Тип значения типа данных этого поля (например, int в StructField с типом данных IntegerType). DataTypes.createStructField(name, dataType, nullable) 4

Python

Типы данных Spark SQL определены в пакете pyspark.sql.types. Доступ к ним осуществляется путем импорта пакета:

from pyspark.sql.types import *
Тип SQL Тип данных Тип значения API для доступа или создания типа данных
TINYINT ByteType int или long. (1) ByteType()
SMALLINT ShortType int или long. (1) ShortType()
INT IntegerType int или long IntegerType()
BIGINT LongType long (1) LongType()
FLOAT FloatType float (1) FloatType()
DOUBLE DoubleType с плавающей запятой DoubleType()
DECIMAL(p,s) DecimalType decimal.Decimal DecimalType()
STRING StringType строка 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()
Интервал года в месяц YearMonthIntervalType Не поддерживается Не поддерживается
интервал дня DayTimeIntervalType datetime.timedelta DayTimeIntervalType (3)
ARRAY ArrayType list, tuple или array ArrayType(elementType, [containsNull]).(2)
MAP MapType dict MapType(keyType, valueType, [valueContainsNull]).(2)
STRUCT StructType list или tuple StructType(fields). fields — это Seq в StructFields. (4)
StructField Тип значения типа данных этого поля (например, Int для StructField с типом данных IntegerType). StructField(name, dataType, [nullable]).(4)

R

Тип SQL Тип данных Тип значения API для доступа или создания типа данных
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 Не поддерживается Не поддерживается
STRING StringType character "string"
BINARY BinaryType raw "binary"
BOOLEAN BooleanType Логические "bool"
TIMESTAMP TimestampType POSIXct "timestamp"
TIMESTAMP_NTZ TimestampNTZType datetime.datetime TimestampNTZType()
DATE DateType Дата "date"
Интервал года в месяц YearMonthIntervalType Не поддерживается Не поддерживается
интервал дня DayTimeIntervalType Не поддерживается Не поддерживается
ARRAY ArrayType vector или list list(type=’array’, elementType=elementType, containsNull=[containsNull]).(2)
MAP MapType environment list(type=’map’, keyType=keyType, valueType=valueType, valueContainsNull=[valueContainsNull]).(2)
STRUCT StructType named list list(type=’struct’, fields=fields). fields — это Seq в StructFields. (4)
StructField Тип значения типа данных этого поля (например, Int в StructField с типом данных IntegerType). list(name=name, type=dataType, nullable=[nullable]).(4)

(1) Числа преобразуются в домен во время выполнения. Убедитесь, что числа находятся в диапазоне.

(2) Необязательное значение по умолчанию — TRUE.

(3) Интервальные типы

  • YearMonthIntervalType([startField,] endField) — интервал "год — месяц", состоящий из непрерывного подмножества следующих полей:

    startField является крайним левым полем, а endField — крайним правым полем типа. Допустимые значения для startField и endField: 0(MONTH) и 1(YEAR).

  • DayTimeIntervalType([startField,] endField) — интервал "год — месяц", состоящий из непрерывного набора следующих полей:

    startField является крайним левым полем, а endField — крайним правым полем типа. Допустимые значения для startField и endField: 0(DAY), 1(HOUR), 2(MINUTE), 3(SECOND).

(4)StructType

  • StructType(fields) представляет значения, которые описывают структуру в виде последовательности, списка или массива StructField (fields). Не допускается использование двух полей с одинаковыми именами.
  • StructField(name, dataType, nullable) представляет поле в StructType. Имя поля указывается с помощью name. Тип данных поля указывается с помощью dataType. nullable указывает, могут ли значения этих полей быть равными null. Это значение по умолчанию.