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


Типы данных

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

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

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

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

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

Important

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

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

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

Целочисленные типы

Целочисленные числовые типы представляют целые числа:

Точные числовые типы

Точные числовые типы представляют базовые-10 числа:

Типы двоичных чисел с плавающей запятой

Двоичные типы с плавающей точкой используют экспоненты и двоичное представление, чтобы охватить большой диапазон чисел.

Числовые типы

Числовые типы представляют все числовые типы данных:

Типы даты и времени

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

Геопространственные типы

Геопространственные типы представляют геометрические или географические объекты:

Простые типы

Простые типы — это типы, определенные путем хранения одноэлементных значений:

Сложные типы

Сложные типы состоят из нескольких компонентов сложных или простых типов:

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

Область применения:отмечено галочкой «Да» Databricks Runtime

Scala

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

import org.apache.spark.sql.types._
Тип SQL Тип данных Тип значения API для доступа или создания типа данных
TINYINT ByteType Byte ByteType
SMALLINT ShortType Short ShortType
INT IntegerType Int IntegerType
BIGINT LongType Long LongType
FLOAT FloatType Float FloatType
DOUBLE DoubleType Double DoubleType
DECIMAL(p,s) DecimalType java.math.BigDecimal DecimalType
STRING StringType String StringType
BINARY BinaryType Array[Byte] BinaryType
BOOLEAN BooleanType Boolean 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)
GEOGRAPHY(srid) Тип географии org.apache.spark.unsafe.type.GeographyVal Тип географии
Geometry(srid) GeometryType org.apache.spark.unsafe.type.GeometryVal GeometryType
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
VARIANT VariantType org.apache.spark.unsafe.type.VariantVal VariantType
OBJECT Не поддерживается Не поддерживается Не поддерживается

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 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 String 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)
GEOGRAPHY(srid) ТипГеографии org.apache.spark.unsafe.type.GeographyVal Тип Географии
Geometry(srid) GeometryType org.apache.spark.unsafe.type.GeometryVal GeometryType
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 — это список или массив StructField. 4
StructField Тип значения типа данных этого поля (например, int в StructField с типом данных IntegerType). DataTypes.createStructField(name, dataType, nullable) 4
VARIANT VariantType org.apache.spark.unsafe.type.VariantVal VariantType
OBJECT Не поддерживается Не поддерживается Не поддерживается

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 float DoubleType()
DECIMAL(p,s) DecimalType decimal.Decimal DecimalType()
STRING StringType string 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)
GEOGRAPHY(srid) Тип географии GeographyVal GeographyType()
Geometry(srid) GeometryType GeometryVal ТипГеометрии()
ARRAY ArrayType список, кортеж или массив ArrayType(elementType, [containsNull]). (2)
MAP MapType dict MapType(keyType, valueType, [valueContainsNull]). (2)
STRUCT StructType список или кортеж StructType(fields). Поле является последовательностью StructField. (4)
StructField Тип значения типа данных этого поля (например, Int для StructField с типом данных IntegerType). StructField(name, dataType, [nullable]). (4)
VARIANT VariantType VariantVal VariantType()
OBJECT Не поддерживается Не поддерживается Не поддерживается

R

Тип SQL Тип данных Тип значения API для доступа или создания типа данных
TINYINT ByteType целое число (1) 'byte'
SMALLINT ShortType целое число (1) 'short'
INT IntegerType integer 'integer'
BIGINT LongType целое число (1) 'long'
FLOAT FloatType числовой (1) 'float'
DOUBLE DoubleType numeric 'double'
DECIMAL(p,s) DecimalType Не поддерживается Не поддерживается
STRING StringType character 'string'
BINARY BinaryType raw 'binary'
BOOLEAN BooleanType logical 'bool'
TIMESTAMP TimestampType POSIXct 'timestamp'
TIMESTAMP_NTZ TimestampNTZType datetime.datetime TimestampNTZType()
DATE DateType Date 'date'
Интервал в годах и месяцах YearMonthIntervalType Не поддерживается Не поддерживается
интервал дня DayTimeIntervalType Не поддерживается Не поддерживается
GEOGRAPHY(srid) Не поддерживается Не поддерживается Не поддерживается
Geometry(srid) Не поддерживается Не поддерживается Не поддерживается
ARRAY ArrayType vector или список list(type='array', elementType=elementType, containsNull=[containsNull]). (2)
MAP MapType environment list(type='map', keyType=keyType, valueType=valueType, valueContainsNull=[valueContainsNull]). (2)
STRUCT StructType именованный список list(type='struct', fields=fields). fields — это Seq в StructFields. (4)
StructField Тип значения типа данных этого поля (например, Int в StructField с типом данных IntegerType). list(name=name, type=dataType, nullable=[nullable]). (4)
VARIANT Не поддерживается Не поддерживается Не поддерживается
OBJECT Не поддерживается Не поддерживается Не поддерживается

(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. Это значение по умолчанию.