Typy danych

Dotyczy:zaznacz pole wyboru oznaczone jako yes Databricks SQL check oznaczone tak Databricks Runtime

Aby uzyskać informacje na temat sposobu rozwiązywania konfliktów między typami danych, zobacz Reguły typów danych SQL.

Obsługiwane typy danych

Usługa Azure Databricks obsługuje następujące typy danych:

Typ danych Opis
BIGINT Reprezentuje 8-bajtowe liczby całkowite ze znakiem.
BINARNYM Reprezentuje wartości sekwencji bajtów.
BOOLEAN Reprezentuje wartości logiczne.
DATA Reprezentuje wartości składające się z wartości pól roku, miesiąca i dnia bez strefy czasowej.
DZIESIĘTNE (p,s) Reprezentuje liczby o maksymalnej dokładności p i stałej skali s.
PODWÓJNE Reprezentuje 8-bajtowe liczby zmiennoprzecinkowe o podwójnej precyzji.
FLOAT Reprezentuje 4-bajtowe liczby zmiennoprzecinkowe o pojedynczej precyzji.
INT Reprezentuje liczby całkowite z podpisem 4 bajtów.
Interwał interwałuQualifier Reprezentuje interwały czasu w skali sekund lub miesięcy.
VOID Reprezentuje nietypowy null.
SMALLINT Reprezentuje liczby całkowite z podpisem 2 bajtów.
CIĄG Reprezentuje wartości ciągów znaków.
SYGNATURY CZASOWEJ Reprezentuje wartości składające się z wartości pól roku, miesiąca, dnia, godziny, minuty i sekundy z lokalną strefą czasową sesji.
TIMESTAMP_NTZ Reprezentuje wartości składające się z wartości pól roku, miesiąca, dnia, godziny, minuty i sekundy. Wszystkie operacje są wykonywane bez uwzględniania żadnej strefy czasowej.
TINYINT Reprezentuje liczby całkowite z podpisem 1 bajtów.
TABLICY Reprezentuje wartości składające się z sekwencji elementów o typie elementType.
MAP < keyType,valueType > Reprezentuje wartości składające się z zestawu par klucz-wartość.
STRUCT < [fieldName: fieldType [NOT NULL][COMMENT str][, ...]] > Reprezentuje wartości ze strukturą opisaną przez sekwencję pól.

Klasyfikacja typów danych

Typy danych są pogrupowane w następujące klasy:

Mapowania języka

Dotyczy:check oznaczone tak Databricks Runtime

Scala

Typy danych Spark SQL są definiowane w pakiecie org.apache.spark.sql.types. Uzyskujesz do nich dostęp, importując pakiet:

import org.apache.spark.sql.types._
Typ SQL Typ danych Typ wartości Interfejs API umożliwiający uzyskiwanie dostępu do typu danych lub tworzenie go
TINYINT ByteType Bajtów ByteType
SMALLINT ShortType Krótki ShortType
INT IntegerType Int IntegerType
BIGINT LongType Długi LongType
FLOAT FloatType Float FloatType
PODWÓJNE DoubleType Podwójne DoubleType
LICZBA DZIESIĘTNA(p,s) Typ dziesiętny java.math.BigDecimal Typ dziesiętny
CIĄG StringType Ciąg StringType
BINARNYM Typ binarny Tablica[Byte] Typ binarny
BOOLEAN Wartość logiczna Boolean Wartość logiczna
SYGNATURY CZASOWEJ TimestampType java.sql.Timestamp TimestampType
TIMESTAMP_NTZ TimestampNTZType java.time.LocalDateTime TimestampNTZType
DATA Typ daty java.sql.Date Typ daty
interwał miesiąca YearMonthIntervalType java.time.Period YearMonthIntervalType (3)
interwał dnia DayTimeIntervalType java.time.Duration DayTimeIntervalType (3)
TABLICY Typ tablicy scala.collection.Seq ArrayType(elementType [, containsNull]). (2)
MAPĘ Typ mapy scala.collection.Map MapType(keyType, valueType [, valueContainsNull]). (2)
STRUCT Typ struktury org.apache.spark.sql.Row StructType(fields). fields jest Seq of StructField. 4.
StructField Typ wartości typu danych tego pola (na przykład Int dla pola struktury z typem danych IntegerType) StructField(name, dataType [, nullable]). 4

Java

Typy danych Spark SQL są definiowane w pakiecie org.apache.spark.sql.types. Aby uzyskać dostęp do typu danych lub utworzyć go, użyj metod fabrycznych podanych w pliku org.apache.spark.sql.types.DataTypes.

Typ SQL Typ danych Typ wartości Interfejs API umożliwiający uzyskiwanie dostępu do typu danych lub tworzenie go
TINYINT ByteType bajt lub bajt DataTypes.ByteType
SMALLINT ShortType krótki lub krótki DataTypes.ShortType
INT Typ całkowitoliczniowy int lub liczba całkowita DataTypes.IntegerType
BIGINT LongType długie lub długie DataTypes.LongType
FLOAT FloatType zmiennoprzecinkowy lub zmiennoprzecinkowy DataTypes.FloatType
PODWÓJNE DoubleType podwójna lub podwójna DataTypes.DoubleType
LICZBA DZIESIĘTNA(p,s) Typ dziesiętny java.math.BigDecimal DataTypes.createDecimalType() DataTypes.createDecimalType(precyzja, skala).
CIĄG StringType Ciąg DataTypes.StringType
BINARNYM BinaryType bajt[] DataTypes.BinaryType
BOOLEAN Typ logiczny wartość logiczna lub wartość logiczna DataTypes.BooleanType
SYGNATURY CZASOWEJ TimestampType java.sql.Timestamp DataTypes.TimestampType
TIMESTAMP_NTZ TimestampNTZType java.time.LocalDateTime DataTypes.TimestampNTZType
DATA DateType java.sql.Date DataTypes.DateType
interwał miesiąca YearMonthIntervalType java.time.Period YearMonthIntervalType (3)
interwał dnia DayTimeIntervalType java.time.Duration DayTimeIntervalType (3)
TABLICY ArrayType ava.util.List DataTypes.createArrayType(elementType [, containsNull]). (2)
MAPĘ MapType java.util.Map DataTypes.createMapType(keyType, valueType [, valueContainsNull]). (2)
STRUCT Typ struktury org.apache.spark.sql.Row DataTypes.createStructType(fields). pola to lista lub tablica obiektu StructField. 4
Pole struktury Typ wartości typu danych tego pola (na przykład int dla obiektu StructField z typem danych IntegerType) DataTypes.createStructField(name, dataType, nullable) 4

Python

Typy danych Spark SQL są definiowane w pakiecie pyspark.sql.types. Uzyskujesz do nich dostęp, importując pakiet:

from pyspark.sql.types import *
Typ SQL Typ danych Typ wartości Interfejs API umożliwiający uzyskiwanie dostępu do typu danych lub tworzenie go
TINYINT ByteType int lub long. (1) ByteType()
SMALLINT ShortType int lub long. (1) ShortType()
INT IntegerType int lub long IntegerType()
BIGINT LongType długie (1) LongType()
FLOAT FloatType float (1) FloatType()
PODWÓJNE DoubleType Float DoubleType()
DZIESIĘTNE (p,s) DecimalType Dziesiętnych. Dziesiętnych DecimalType()
CIĄG StringType Ciąg StringType()
BINARNYM BinaryType Bytearray BinaryType()
BOOLEAN Typ logiczny Bool Wartość logiczna()
SYGNATURY CZASOWEJ TimestampType datetime.datetime TimestampType()
TIMESTAMP_NTZ TimestampNTZType datetime.datetime TimestampNTZType()
DATA DateType datetime.date DateType()
interwał miesiąca YearMonthIntervalType Nieobsługiwane Nieobsługiwane
interwał dnia DayTimeIntervalType datetime.timedelta DayTimeIntervalType (3)
TABLICY ArrayType lista, krotka lub tablica ArrayType(elementType, [containsNull]). (2)
MAPĘ MapType Dict MapType(keyType, valueType, [valueContainsNull]). (2)
STRUCT Typ struktury lista lub krotka StructType(fields). pole jest seq obiektu StructField. (4)
Pole struktury Typ wartości typu danych tego pola (na przykład Int dla pola struktury z typem danych IntegerType) StructField(name, dataType, [nullable]). (4)

R

Typ SQL Typ danych Typ wartości Interfejs API umożliwiający uzyskiwanie dostępu do typu danych lub tworzenie go
TINYINT ByteType liczba całkowita (1) "bajt"
SMALLINT ShortType liczba całkowita (1) "krótki"
INT IntegerType Liczba całkowita "Liczba całkowita"
BIGINT LongType liczba całkowita (1) "long"
FLOAT FloatType numeryczne (1) "float"
PODWÓJNE DoubleType Liczbowe "double"
DZIESIĘTNE (p,s) DecimalType Nieobsługiwane Nieobsługiwane
CIĄG StringType Znaków "ciąg"
BINARNYM BinaryType Raw "binary"
BOOLEAN Typ logiczny Logiczne "bool"
SYGNATURY CZASOWEJ TimestampType POSIXct "sygnatura czasowa"
TIMESTAMP_NTZ TimestampNTZType datetime.datetime TimestampNTZType()
DATA DateType Data "date"
interwał miesiąca YearMonthIntervalType Nieobsługiwane Nieobsługiwane
interwał dnia DayTimeIntervalType Nieobsługiwane Nieobsługiwane
TABLICY Typ tablicy wektor lub lista list(type='array', elementType=elementType, containsNull=[containsNull]). (2)
MAPĘ Typ mapy Środowiska list(type='map', keyType=keyType, valueType=valueType, valueContainsNull=[valueContainsNull]). (2)
STRUCT Typ struktury nazwana lista list(type='struct', fields=fields). fields jest Seq of StructField. (4)
StructField Typ wartości typu danych tego pola (na przykład liczba całkowita dla pola struktury z typem danych IntegerType) list(name=name, type=dataType, nullable=[nullable]). (4)

(1) Liczby są konwertowane na domenę w czasie wykonywania. Upewnij się, że liczby znajdują się w zakresie.

(2) Wartość opcjonalna jest domyślnie ustawiona na TRUE.

(3) Typy interwałów

  • YearMonthIntervalType([startField,] endField): Reprezentuje interwał miesiąca, który składa się z ciągłego podzestawu następujących pól:

    startField to najbardziej lewe pole i endField jest najbardziej prawym polem typu. Prawidłowe wartości startField i endField to 0(MONTH) i 1(YEAR).

  • DayTimeIntervalType([startField,] endField): reprezentuje interwał dzienny składający się z ciągłego podzbioru następujących pól:

    startField to najbardziej lewe pole i endField jest najbardziej prawym polem typu. Prawidłowe wartości startField i endField to 0(DAY), , 1(HOUR)2(MINUTE), 3(SECOND).

(4)StructType

  • StructType(fields) Reprezentuje wartości ze strukturą opisaną przez sekwencję, listę lub tablicę StructField(pól). Dwa pola o tej samej nazwie są niedozwolone.
  • StructField(name, dataType, nullable) Reprezentuje pole w obiekcie StructType. Nazwa pola jest wskazywana przez name. Typ danych pola jest wskazywany przez typ danych. nullable wskazuje, czy wartości tych pól mogą mieć null wartości. Jest to wartość domyślna.