Typy danych
Dotyczy: Databricks SQL Databricks Runtime
Aby uzyskać reguły dotyczące 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 liczby całkowite ze znakiem 8 bajtów. |
DWÓJKOWY | Reprezentuje wartości sekwencji bajtów. |
BOOLOWSKI | Reprezentuje wartości logiczne. |
DATA | Reprezentuje wartości składające się z wartości pól rok, miesiąc i dzień bez strefy czasowej. |
DZIESIĘTNE (p, s) | Reprezentuje liczby o maksymalnej precyzji p i stałej skali s . |
PODWÓJNY | Reprezentuje 8-bajtowe liczby zmiennoprzecinkowe o podwójnej precyzji. |
SPŁAWIK | Reprezentuje 4-bajtowe liczby zmiennoprzecinkowe o pojedynczej precyzji. |
INT | Reprezentuje liczby całkowite ze znakiem 4 bajtów. |
Interwał interwałuQualifier | Reprezentuje interwały czasu w skali sekund lub miesięcy. |
NIEWAŻNY | Reprezentuje nietypowaną wartość NULL. |
SMALLINT | Reprezentuje liczby całkowite ze znakiem 2 bajtów. |
STRUNA | Reprezentuje wartości ciągów znaków. |
TIMESTAMP | Reprezentuje wartości składające się z wartości pól rok, miesiąc, dzień, godzina, minuta i sekunda z lokalną strefą czasową sesji. |
TIMESTAMP_NTZ | Reprezentuje wartości składające się z wartości pól rok, miesiąc, dzień, godzina, minuta i sekunda. Wszystkie operacje są wykonywane bez uwzględniania strefy czasowej. |
TINYINT | Reprezentuje liczby całkowite ze znakiem 1 bajtów. |
ARRAY < , typ elementu > | 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ść. |
< Struktura [fieldName: fieldType [NOT NULL][COMMENT str][, ...]] > | Reprezentuje wartości ze strukturą opisaną przez sekwencję pól. |
WARIANT | Reprezentuje dane częściowo ustrukturyzowane. |
SPRZECIWIAĆ SIĘ | Reprezentuje wartości w obiekcie VARIANT ze strukturą opisaną przez zestaw pól. |
Ważne
Usługa Delta Lake nie obsługuje VOID
typu .
Klasyfikacja typów danych
Typy danych są pogrupowane w następujące klasy:
- Typy liczb całkowitych reprezentują liczby całkowite:
- Dokładne typy liczbowe reprezentują liczby base-10:
- Binarne typy zmiennoprzecinkowe używają wykładników i reprezentacji binarnej do pokrycia dużego zakresu liczb:
- Typy liczbowe reprezentują wszystkie typy danych liczbowych:
- Typy daty i godziny reprezentują składniki daty i godziny:
- Proste typy są typami zdefiniowanymi przez przechowywanie pojedynczych wartości:
- Złożone typy składają się z wielu składników złożonych lub prostych typów:
Mapowania języków
Dotyczy: 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 | Typ bajtu | Byte | Typ bajtu |
SMALLINT | ShortType | Krótkie | ShortType |
INT | Typ liczby całkowitej | Int | Typ liczby całkowitej |
BIGINT | LongType | Długi | LongType |
SPŁAWIK | FloatType | Liczba zmiennoprzecinkowa | FloatType |
PODWÓJNY | DoubleType | Liczba rzeczywista | DoubleType |
DZIESIĘTNE (p, s) | Typ dziesiętny | java.math.BigDecimal | Typ dziesiętny |
STRUNA | StringType | String | StringType |
DWÓJKOWY | BinaryType | Tablica[bajt] | BinaryType |
BOOLOWSKI | Typ logiczny | Wartość logiczna | Typ logiczny |
TIMESTAMP | TimestampType | java.sql.Sygnatura czasowa | TimestampType |
TIMESTAMP_NTZ | TimestampNTZType | java.time.LocalDateTime | TimestampNTZType |
DATA | Typ daty | java.sql.Date | Typ daty |
interwał miesiąca roku | YearMonthIntervalType | java.time.Period | YearMonthIntervalType (3) |
Interwał dnia | DayTimeIntervalType | java.time.Duration | DayTimeIntervalType (3) |
TABLICA | ArrayType | scala.collection.Seq | ArrayType(elementType [, containsNull]). (2) |
MAPA | Typ mapy | scala.collection.Map | MapType(keyType, valueType [, valueContainsNull]). (2) |
STRUCT | Typ struktury | org.apache.spark.sql.Row | StructType(fields). fields to Seq of 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 | |
WARIANT | VariantType | org.apache.spark.niebezpieczne.type.VariantVal | VariantType |
SPRZECIWIAĆ SIĘ | Nieobsługiwany | Nieobsługiwane | Nieobsługiwane |
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 | Typ bajtu | bajt lub bajt | DataTypes.ByteType |
SMALLINT | ShortType | krótki lub krótki | DataTypes.ShortType |
INT | Typ liczby całkowitej | int lub liczba całkowita | DataTypes.IntegerType |
BIGINT | LongType | długi lub długi | DataTypes.LongType |
SPŁAWIK | FloatType | zmiennoprzecinkowy lub zmiennoprzecinkowy | DataTypes.FloatType |
PODWÓJNY | DoubleType | podwójna lub podwójna | DataTypes.DoubleType |
DZIESIĘTNE (p, s) | Typ dziesiętny | java.math.BigDecimal | DataTypes.createDecimalType() DataTypes.createDecimalType(precyzja, skala). |
STRUNA | StringType | String | DataTypes.StringType |
DWÓJKOWY | BinaryType | byte[] | DataTypes.BinaryType |
BOOLOWSKI | Typ logiczny | wartość logiczna lub wartość logiczna | DataTypes.BooleanType |
TIMESTAMP | TimestampType | java.sql.Sygnatura czasowa | DataTypes.TimestampType |
TIMESTAMP_NTZ | TimestampNTZType | java.time.LocalDateTime | DataTypes.TimestampNTZType |
DATA | Typ daty | java.sql.Date | DataTypes.DateType |
interwał miesiąca roku | YearMonthIntervalType | java.time.Period | YearMonthIntervalType (3) |
Interwał dnia | DayTimeIntervalType | java.time.Duration | DayTimeIntervalType (3) |
TABLICA | ArrayType | ava.util.List | DataTypes.createArrayType(elementType [, containsNull]).(2) |
MAPA | Typ mapy | 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 pola StructField z typem danych IntegerType) | DataTypes.createStructField(name, dataType, nullable) 4 | |
WARIANT | VariantType | org.apache.spark.niebezpieczne.type.VariantVal | VariantType |
SPRZECIWIAĆ SIĘ | Nieobsługiwany | Nieobsługiwane | Nieobsługiwane |
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 | Typ bajtu | int lub long. (1) | ByteType() |
SMALLINT | ShortType | int lub long. (1) | ShortType() |
INT | Typ liczby całkowitej | int lub long | IntegerType() |
BIGINT | LongType | długość (1) | LongType() |
SPŁAWIK | FloatType | zmiennoprzecinkowy (1) | FloatType() |
PODWÓJNY | DoubleType | liczba zmiennoprzecinkowa | DoubleType() |
DZIESIĘTNE (p, s) | Typ dziesiętny | dziesiętny. Dziesiętny | DecimalType() |
STRUNA | StringType | string | StringType() |
DWÓJKOWY | BinaryType | bytearray | BinaryType() |
BOOLOWSKI | Typ logiczny | bool | Wartość logiczna() |
TIMESTAMP | TimestampType | datetime.datetime | TimestampType() |
TIMESTAMP_NTZ | TimestampNTZType | datetime.datetime | TimestampNTZType() |
DATA | Typ daty | datetime.date | DateType() |
interwał miesiąca roku | YearMonthIntervalType | Nieobsługiwane | Nieobsługiwane |
Interwał dnia | DayTimeIntervalType | datetime.timedelta | DayTimeIntervalType (3) |
TABLICA | ArrayType | lista, krotka lub tablica | ArrayType(elementType, [containsNull]).(2) |
MAPA | Typ mapy | 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 StructField z typem danych IntegerType) | StructField(name, dataType, [nullable]).(4) | |
WARIANT | VariantType | VariantVal | VariantType() |
SPRZECIWIAĆ SIĘ | Nieobsługiwany | Nieobsługiwane | Nieobsługiwane |
R
Typ SQL | Typ danych | Typ wartości | Interfejs API umożliwiający uzyskiwanie dostępu do typu danych lub tworzenie go |
---|---|---|---|
TINYINT | Typ bajtu | Liczba całkowita (1) | "bajt" |
SMALLINT | ShortType | Liczba całkowita (1) | "short" |
INT | Typ liczby całkowitej | integer | "Liczba całkowita" |
BIGINT | LongType | Liczba całkowita (1) | "long" |
SPŁAWIK | FloatType | numeryczne (1) | "float" |
PODWÓJNY | DoubleType | numeryczne | "double" |
DZIESIĘTNE (p, s) | Typ dziesiętny | Nieobsługiwane | Nieobsługiwane |
STRUNA | StringType | znak | "ciąg" |
DWÓJKOWY | BinaryType | raw | "binary" |
BOOLOWSKI | Typ logiczny | logiczny | "bool" |
TIMESTAMP | TimestampType | POSIXct | "sygnatura czasowa" |
TIMESTAMP_NTZ | TimestampNTZType | datetime.datetime | TimestampNTZType() |
DATA | Typ daty | Data | "date" |
interwał miesiąca roku | YearMonthIntervalType | Nieobsługiwane | Nieobsługiwane |
Interwał dnia | DayTimeIntervalType | Nieobsługiwane | Nieobsługiwane |
TABLICA | ArrayType | wektor lub lista | list(type='array', elementType=elementType, containsNull=[containsNull]).(2) |
MAPA | Typ mapy | Środowisko usługi | list(type='map', keyType=keyType, valueType=valueType, valueContainsNull=[valueContainsNull]).(2) |
STRUCT | Typ struktury | nazwana lista | list(type='struct', fields=fields). fields to Seq of StructField. (4) |
Pole struktury | Typ wartości typu danych tego pola (na przykład liczba całkowita dla pola StructField z typem danych IntegerType) | list(name=name, type=dataType, nullable=[nullable]).(4) | |
WARIANT | Nieobsługiwany | Nieobsługiwane | Nieobsługiwane |
SPRZECIWIAĆ SIĘ | Nieobsługiwany | Nieobsługiwane | Nieobsługiwane |
(1) Liczby są konwertowane na domenę w czasie wykonywania. Upewnij się, że liczby znajdują się w zakresie.
(2) Opcjonalna wartość domyślna to 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
jest polem najdalej po lewej stronie iendField
jest najbardziej prawym polem typu. Prawidłowe wartości istartField
endField
to0(MONTH)
i1(YEAR)
.DayTimeIntervalType([startField,] endField)
: Reprezentuje interwał dnia składający się z ciągłego podzestawu następujących pól:startField
jest polem najdalej po lewej stronie iendField
jest najbardziej prawym polem typu. Prawidłowe wartości istartField
endField
to0(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 obiekcieStructType
. Nazwa pola jest wskazywana przezname
. Typ danych pola jest wskazywany przez typ danych.nullable
wskazuje, czy wartości tych pól mogą miećnull
wartości. Jest to opcja domyślna.