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


Типы данных

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

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

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

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

Тип данных Описание
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.
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 для доступа или создания типа данных
TINYINT ByteType Байт ByteType
SMALLINT ShortType Короткий ShortType
INT IntegerType Int ЦелочисленныйТип
BIGINT LongType Длинный LongType
FLOAT Тип с плавающей запятой Тип с плавающей запятой Тип с плавающей запятой
DOUBLE DoubleType Двойной DoubleType
DECIMAL(p,s) Десятичный тип java.math.BigDecimal ДесятичныйТип
STRING ТипСтроки Строка StringType
BINARY БинарныйТип Array[Byte] БинарныйТип
BOOLEAN BooleanType Логический ЛогическийТип
TIMESTAMP TimestampType java.sql.Timestamp Тип временной метки
TIMESTAMP_NTZ TimestampNTZType java.time.LocalDateTime TimestampNTZType
DATE ТипДата java.sql.Date ТипДаты
Интервал год-месяц ТипИнтервалаГодМесяц java.time.Period Тип интервала год-месяц (3)
интервал дня ТипИнтервалаДняВремени java.time.Duration DayTimeIntervalType (3)
ARRAY Тип массива scala.collection.Seq ArrayType(elementType [, containsNull]). (2)
MAP MapType scala.collection.Map MapType(keyType, valueType [, valueContainsNull]). (2)
СТРУКТУРА StructType 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 Тип Варианта
ОБЪЕКТ Не поддерживается Не поддерживается Не поддерживается

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 DataTypes.ShortType
INT ЦелочисленныйТип int или Integer DataTypes.IntegerType
BIGINT LongType long или Long DataTypes.LongType
FLOAT FloatType float или Float DataTypes.FloatType
DOUBLE DoubleType double или Double ТипДанных.DoubleType
DECIMAL(p,s) ДесятичныйТип java.math.BigDecimal DataTypes.createDecimalType() DataTypes.createDecimalType(precision, scale).
STRING СтроковыйТип Строка DataTypes.StringType
BINARY БинарныйТип byte[] DataTypes.BinaryType
BOOLEAN BooleanType boolean или Boolean DataTypes.BooleanType (Тип данных. Логический тип)
TIMESTAMP тип временной метки java.sql.Timestamp DataTypes.TimestampType
TIMESTAMP_NTZ Тип временной метки NTZ java.time.LocalDateTime DataTypes.TimestampNTZType
DATE ТипДаты java.sql.Date ТипыДанных.ТипДаты
Год-месяц интервал ТипИнтервалаГодМесяц java.time.Period Тип интервала год-месяц (3)
интервал дня Тип интервала дня и времени java.time.Duration (класс для управления временем в Java) DayTimeIntervalType (3)
ARRAY Тип массива ava.util.List DataTypes.createArrayType(elementType [, containsNull]).(2)
MAP Тип карты 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 ТипВарианта
ОБЪЕКТ Не поддерживается Не поддерживается Не поддерживается

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 флoт DoubleType()
DECIMAL(p,s) ДесятичныйТип decimal.Decimal DecimalType()
STRING СтроковыйТип строка StringType()
BINARY БинарныйТип массив байтов (bytearray) BinaryType()
BOOLEAN BooleanType bool BooleanType()
TIMESTAMP Тип временной метки datetime.datetime TimestampType()
TIMESTAMP_NTZ TimestampNTZType datetime.datetime TimestampNTZType()
DATE Тип даты datetime.date DateType()
Интервал год-месяц Тип интервала год-месяц Не поддерживается Не поддерживается
интервал дня ТипИнтервалаДняВремени datetime.timedelta ТипДневногоИнтервала (3)
ARRAY Тип массива список, кортеж или массив ArrayType(elementType, [containsNull]).(2)
MAP Тип карты dict MapType(keyType, valueType, [valueContainsNull]).(2)
STRUCT StructType список или кортеж StructType(fields). Поле является последовательностью StructField. (4)
StructField Тип значения типа данных этого поля (например, Int для StructField с типом данных IntegerType). StructField(name, dataType, [nullable]).(4)
ВАРИАНТ ТипВарианта VariantVal ТипВарианта()
ОБЪЕКТ Не поддерживается Не поддерживается Не поддерживается

R

Тип SQL Тип данных Тип значения API для доступа или создания типа данных
TINYINT ByteType integer (1) байт
SMALLINT ShortType integer (1) короткий
INT ЦелочисленныйТип целое число целое число
BIGINT ЛонгТайп integer (1) длинный
FLOAT FloatType числовой (1) число с плавающей запятой
DOUBLE DoubleType числовой двойной
DECIMAL(p,s) Тип Decimal Не поддерживается Не поддерживается
STRING СтроковыйТип символ строка
BINARY ДвоичныйТип сырой двоичный
BOOLEAN BooleanType Логичный "bool"
TIMESTAMP Тип метки времени POSIXct метка времени
TIMESTAMP_NTZ TimestampNTZType datetime.datetime TimestampNTZType()
DATE ТипДаты Дата дата
Интервал год-месяц ТипИнтервалаГодМесяц Не поддерживается Не поддерживается
интервал дня ТипИнтервалаВремениДня Не поддерживается Не поддерживается
ARRAY Тип массива vector или список list(type=’array’, elementType=elementType, containsNull=[containsNull]).(2)
MAP Тип карты окружающая среда list(type=’map’, keyType=keyType, valueType=valueType, valueContainsNull=[valueContainsNull]).(2)
СТРУКТУРА ТипСтруктуры именованный список Список(type=’struct’, fields=fields). fields — это последовательность StructField'ов. (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. Это значение по умолчанию.

Связанные статьи