Поделиться через


Типы данных

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

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

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

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

Тип данных Описание
BIGINT Представляет 8-байтовые целые числа со знаком.
ДВОИЧНЫЙ Представляет значения последовательности байтов.
БУЛЕВ Представляет логические значения.
ДАТА Значения, содержащие значения полей «год», «месяц» и «день», без часового пояса.
DECIMAL(p,s) Представляет числа с максимальной точностью p и фиксированной шкалой s.
двойной 8-байтовые числа двойной точности с плавающей точкой.
Флоат 4-байтовые числа одиночной точности с плавающей точкой.
ИНТ Представляет 4-байтовые целые числа со знаком.
ИНТЕРВАЛ квалификатор интервала Представляет интервалы времени либо в секундах, либо в месяцах.
ПУСТОТА Нетипизированное значение NULL.
SMALLINT Представляет 2-байтовые целые числа со знаком.
СТРУНА Представляет значения символьных строк.
TIMESTAMP Значения, содержащие значения полей "год", "месяц", "день", "час", "минута" и "секунда", используя локальный часовой пояс сеанса.
TIMESTAMP_NTZ Представляет значения полей года, месяца, дня, часа, минуты и секунды. Все операции выполняются без учета часового пояса.
ТИНИНТ Представляет 1-байтовые целые числа со знаком.
Элемент типа ARRAY <> Представляет значения, которые составляют последовательность элементов типа elementType.
MAP < keyType,valueType > Представляет значения в виде набора пар "ключ-значение".
STRUCT < [fieldName: fieldType [NOT NULL][COMMENT str][, ...]] > Представляет значения со структурой, описанной последовательностью полей.
ВАРИАНТ Представляет полуструктурированные данные.
ОБЪЕКТ Представляет значения в структуре VARIANT, описываемой набором полей.

Внимание

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

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

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

  • Типы с плавающей запятой используют экспоненты и двоичное представление для покрытия большого диапазона чисел:

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

Относится к:установлен флажок Databricks Runtime

язык программирования Scala

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

import org.apache.spark.sql.types._
Тип SQL Тип данных Тип значения API для доступа или создания типа данных
ТИНИНТ Тип байта Байт Тип байта
SMALLINT ShortType Короткий ShortType
ИНТ Целочисленный тип int Целочисленный тип
BIGINT ДлинныйТип Длинный ДлинныйТип
Флоат Тип с плавающей запятой Тип с плавающей запятой Тип с плавающей запятой
двойной ДвойнойТип Двойной ДвойнойТип
DECIMAL(p,s) Десятичный тип java.math.BigDecimal Десятичный тип
СТРУНА ТипСтроки Строка ТипСтроки
ДВОИЧНЫЙ БинарныйТип Массив[Байт] БинарныйТип
БУЛЕВ Тип Boolean Логический Тип Boolean
TIMESTAMP Тип временной метки java.sql.Timestamp Тип временной метки
TIMESTAMP_NTZ TimestampNTZType java.time.LocalDateTime TimestampNTZType
ДАТА ТипДата java.sql.Date ТипДата
Интервал год-месяц ТипИнтервалаГодМесяц java.time.Period Тип интервала год-месяц (3)
интервал дня ТипИнтервалаДняВремени java.time.Duration DayTimeIntervalType (3)
МАССИВ Тип массива scala.collection.Seq ArrayType(elementType [, containsNull]). (2)
КАРТА Тип карты scala.collection.Map MapType(keyType, valueType [, valueContainsNull]). (2)
СТРУКТУРА ТипСтруктуры org.apache.spark.sql.Row StructType(поля). fields — это Seq в StructFields. 4.
StructField Тип значения типа данных этого поля (например, Int для StructField с типом данных IntegerType). Поле структуры (StructField) с параметрами name, dataType [, nullable]. 4
ВАРИАНТ Тип варианта org.apache.spark.unsafe.type.VariantVal Тип варианта
ОБЪЕКТ Не поддерживается Не поддерживается Не поддерживается

Ява

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

Тип SQL Тип данных Тип значения API для доступа или создания типа данных
ТИНИНТ Тип байта byte или Byte DataTypes.ByteType
SMALLINT ShortType короткий или Short DataTypes.ShortType
ИНТ Целочисленный тип int или Integer Типы данных.Вид целого числа
BIGINT ДлинныйТип long или Long DataTypes.LongType
Флоат Тип с плавающей запятой float или Float DataTypes.FloatType
двойной ДвойнойТип double или Double ТипДанных.DoubleType
DECIMAL(p,s) Десятичный тип java.math.BigDecimal DataTypes.createDecimalType() DataTypes.createDecimalType(precision, scale).
СТРУНА ТипСтроки Строка DataTypes.StringType
ДВОИЧНЫЙ БинарныйТип байт[] DataTypes.BinaryType
БУЛЕВ Тип Boolean boolean или Boolean DataTypes.BooleanType (Тип данных. Логический тип)
TIMESTAMP Тип временной метки java.sql.Timestamp Типы данных.Тип отметки времени
TIMESTAMP_NTZ ТипВременнойМеткиNTZ java.time.LocalDateTime DataTypes.TimestampNTZType
ДАТА ТипДата java.sql.Date ТипыДанных.ТипДаты
Интервал год-месяц ТипИнтервалаГодМесяц java.time.Period Тип интервала год-месяц (3)
интервал дня ТипИнтервалаДняВремени java.time.Duration DayTimeIntervalType (3)
МАССИВ Тип массива ava.util.List DataTypes.createArrayType(elementType [, containsNull]). (2)
КАРТА Тип карты java.util.Map DataTypes.createMapType(keyType, valueType [, valueContainsNull]). (2)
СТРУКТУРА ТипСтруктуры org.apache.spark.sql.Row DataTypes.createStructType(fields). fields — это список или массив StructField. 4
StructField Тип значения типа данных этого поля (например, int в StructField с типом данных IntegerType). DataTypes.createStructField(name, dataType, nullable) 4
ВАРИАНТ Тип варианта org.apache.spark.unsafe.type.VariantVal Тип варианта
ОБЪЕКТ Не поддерживается Не поддерживается Не поддерживается

Питон

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

from pyspark.sql.types import *
Тип SQL Тип данных Тип значения API для доступа или создания типа данных
ТИНИНТ Тип байта int или long. (1) ByteType()
SMALLINT ShortType int или long. (1) ShortType()
ИНТ Целочисленный тип int или long IntegerType()
BIGINT ДлинныйТип long (1) LongType()
Флоат Тип с плавающей запятой float (1) FloatType()
двойной ДвойнойТип флoт DoubleType()
DECIMAL(p,s) Десятичный тип десятичный. Десятичный DecimalType()
СТРУНА ТипСтроки строка StringType()
ДВОИЧНЫЙ БинарныйТип массив байтов (bytearray) BinaryType()
БУЛЕВ Тип Boolean булевая переменная (bool) BooleanType()
TIMESTAMP Тип временной метки datetime.datetime TimestampType()
TIMESTAMP_NTZ TimestampNTZType datetime.datetime TimestampNTZType()
ДАТА ТипДата datetime.date DateType()
Интервал год-месяц ТипИнтервалаГодМесяц Не поддерживается Не поддерживается
интервал дня ТипИнтервалаДняВремени datetime.timedelta DayTimeIntervalType (3)
МАССИВ Тип массива список, кортеж или массив ArrayType(elementType, [containsNull]). (2)
КАРТА Тип карты Дикт MapType(keyType, valueType, [valueContainsNull]). (2)
СТРУКТУРА ТипСтруктуры список или кортеж StructType(поля). Поле является последовательностью StructField. (4)
StructField Тип значения типа данных этого поля (например, Int для StructField с типом данных IntegerType). StructField(name, dataType, [nullable]). (4)
ВАРИАНТ Тип варианта VariantVal ТипВарианта()
ОБЪЕКТ Не поддерживается Не поддерживается Не поддерживается

Р

Тип SQL Тип данных Тип значения API для доступа или создания типа данных
ТИНИНТ Тип байта целое число (1) байт
SMALLINT ShortType целое число (1) короткий
ИНТ Целочисленный тип целое число Целое число
BIGINT ДлинныйТип целое число (1) длинный
Флоат Тип с плавающей запятой числовой (1) «Плавать»
двойной ДвойнойТип числовой двойной
DECIMAL(p,s) Десятичный тип Не поддерживается Не поддерживается
СТРУНА ТипСтроки символ "string"
ДВОИЧНЫЙ БинарныйТип сырой "binary"
БУЛЕВ Тип Boolean Логичный 'bool'
TIMESTAMP Тип временной метки POSIXct "метка времени"
TIMESTAMP_NTZ TimestampNTZType datetime.datetime TimestampNTZType()
ДАТА ТипДата Дата "дата"
Интервал год-месяц ТипИнтервалаГодМесяц Не поддерживается Не поддерживается
интервал дня ТипИнтервалаДняВремени Не поддерживается Не поддерживается
МАССИВ Тип массива vector или список list(type='array', elementType=elementType, containsNull=[containsNull]). (2)
КАРТА Тип карты окружающая среда list(type='map', keyType=keyType, valueType=valueType, valueContainsNull=[valueContainsNull]). (2)
СТРУКТУРА ТипСтруктуры именованный список 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. Это значение по умолчанию.