Типы данных
Область применения: 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-байтовые целые числа со знаком. |
Элемент ARRAYType <> | Значения, составляющие последовательность элементов с типом 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 | 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 | |
ВАРИАНТ | VariantType | org.apache.spark.unsafe.type.VariantVal | VariantType |
ОБЪЕКТ | Не поддерживается | Не поддерживается | Не поддерживается |
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 | |
ВАРИАНТ | VariantType | org.apache.spark.unsafe.type.VariantVal | VariantType |
ОБЪЕКТ | Не поддерживается | Не поддерживается | Не поддерживается |
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) | |
ВАРИАНТ | VariantType | VariantVal | VariantType() |
ОБЪЕКТ | Не поддерживается | Не поддерживается | Не поддерживается |
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
. Это значение по умолчанию.