Типы данных
Область применения: 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
тип.
Классификация типов данных
Типы данных сгруппированы по следующим категориям:
- Целочисленные числовые типы представляют целые числа:
- Точные числовые типы представляют базовые-10 числа:
- Типы с плавающей запятой используют экспоненты и двоичное представление для покрытия большого диапазона чисел:
- Числовые типы представляют все числовые типы данных:
- Типы даты и времени представляют компоненты даты и времени:
- Простые типы — это типы, определенные путем хранения одноэлементных значений:
- Сложные типы состоят из нескольких компонентов сложных или простых типов:
Сопоставления языков
Относится к: 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
. Это значение по умолчанию.