Share via


Typetoewijzing met PolyBase

Van toepassing op: SQL Server 2016 (13.x) en latere versies in Windows

In dit artikel wordt de toewijzing tussen externe PolyBase-gegevensbronnen en SQL Server beschreven. U kunt deze informatie gebruiken om externe tabellen correct te definiëren met de opdracht CREATE EXTERNAL TABLE Transact-SQL.

Overzicht

Wanneer u een externe tabel met PolyBase maakt, moeten de kolomdefinities, inclusief de gegevenstypen en het aantal kolommen, overeenkomen met de gegevens in de externe bestanden. Als er een onjuiste overeenkomst is, worden de bestandsrijen geweigerd bij het uitvoeren van query's op de werkelijke gegevens.

Voor externe tabellen die verwijzen naar bestanden in externe gegevensbronnen, moeten de kolom- en typedefinities worden toegewezen aan het exacte schema van het externe bestand. Wanneer u gegevenstypen definieert die verwijzen naar gegevens die zijn opgeslagen in Hadoop/Hive, gebruikt u de volgende toewijzingen tussen SQL- en Hive-gegevenstypen en cast u het type in een SQL-gegevenstype bij het selecteren. De typen omvatten alle versies van Hive, tenzij anders vermeld.

Opmerking

SQL Server biedt geen ondersteuning voor de Hive infinity-gegevenswaarde in een conversie. PolyBase mislukt met een conversiefout voor het gegevenstype.

Verwijzing naar Hadoop-typetoewijzing

SQL-gegevenstype .NET-gegevenstype Hive-gegevenstype Hadoop/Java-gegevenstype 1 Comments
tinyint Byte tinyint ByteWritable Alleen voor niet-ondertekende getallen.
smallint Int16 smallint ShortWritable
int Int32 int IntWritable
bigint Int64 bigint LongWritable
bit Boolean boolean BooleanWritable
float Double double DoubleWritable
echte Single float FloatWritable
geld Decimal double DoubleWritable
kleingeld Decimal double DoubleWritable
nchar String
Char[]
string Varchar
nvarchar String
Char[]
string Varchar
teken String
Char[]
string Varchar
varchar String
Char[]
string Varchar
binary Byte[] binary BytesWritable Van toepassing op Hive 0.8 en latere versies.
varbinary Byte[] binary BytesWritable Van toepassing op Hive 0.8 en latere versies.
date DateTime timestamp TimestampWritable
smalldatetime DateTime timestamp TimestampWritable
datetime2 DateTime timestamp TimestampWritable
datetime DateTime timestamp TimestampWritable
time TimeSpan timestamp TimestampWritable
decimal Decimal decimal BigDecimalWritable Van toepassing op Hive 0.11 en nieuwere versies.

1 Hadoop wordt niet meer ondersteund in SQL Server 2022 (16.x) en latere versies.

Naslagwerk voor de mapping van Parquet- en Delta-typen

Informatie over de toewijzing van externe tabeltypen van Parquet en Delta aan SQL Server-gegevenstypen vindt u in deze sectie.

Parquet- en Delta Lake-bestanden bevatten typebeschrijvingen voor elke kolom. In de volgende tabel wordt beschreven hoe Parquet-typen worden toegewezen aan systeemeigen SQL-typen.

Parquet-type Parquet-logisch type (aantekening) SQL-gegevenstype
BOOLEAN bit
BINARY / BYTE_ARRAY varbinary
DOUBLE float
FLOAT echte
INT32 int
INT64 bigint
INT96 datetime2
FIXED_LEN_BYTE_ARRAY binary
BINARY UTF8 varchar1
BINARY STRING varchar1
BINARY ENUM varchar1
FIXED_LEN_BYTE_ARRAY UUID uniqueidentifier
BINARY DECIMAL decimal
BINARY JSON varchar(8000)1
BINARY BSON Niet ondersteund
FIXED_LEN_BYTE_ARRAY DECIMAL decimal
BYTE_ARRAY INTERVAL Niet ondersteund
INT32 INT(8, true) smallint
INT32 INT(16, true) smallint
INT32 INT(32, true) int
INT32 INT(8, false) tinyint
INT32 INT(16, false) int
INT32 INT(32, false) bigint
INT32 DATE date
INT32 DECIMAL decimal
INT32 TIME (MILLIS) time
INT64 INT(64, true) bigint
INT64 INT(64, false) decimal(20,0)
INT64 DECIMAL decimal
INT64 TIME (MICROS) time
INT64 TIME (NANOS) Niet ondersteund
INT64 TIMESTAMP (genormaliseerd naar UTC) (MILLIS/ MICROS) datetime2
INT64 TIMESTAMP (niet genormaliseerd naar UTC) (MILLIS/ MICROS) bigint: zorg ervoor dat u de waarde expliciet aanpast bigint met de tijdzone-offset voordat u deze converteert naar een datum/tijd-waarde.
INT64 TIMESTAMP (NANOS) Niet ondersteund
Complex type LIJST varchar(8000), geserialiseerd in JSON
Complex type MAP varchar(8000), geserialiseerd in JSON

1 UTF-8-sortering.

Naslaginformatie voor Oracle-typetoewijzing

Oracle-gegevenstype SQL Server-gegevenstype
FLOAT float
NUMBER float
NUMBER (p,s) Decimaal(P, S)
LONG nvarchar
BINARY_FLOAT echte
BINARY_DOUBLE float
CHAR teken
VARCHAR2 varchar
NVARCHAR2 nvarchar
RAW varbinary
LONG RAW varbinary
BLOB varbinary
CLOB varchar
NCLOB nvarchar
ROWID varchar
UROWID varchar
DATE datetime2
TIMESTAMP datetime2

Type komt niet overeen

zweven

Oracle ondersteunt drijvendekommaprecisie van 126, wat lager is dan wat SQL Server ondersteunt (53). Float (1-53) kan daarom rechtstreeks worden toegewezen, maar daarbuiten is er gegevensverlies als gevolg van afkapping.

Tijdstempel

Tijdstempel en tijdstempel met lokale tijdzone in Oracle bieden ondersteuning voor precisie van 9 fractionele seconden, terwijl SQL Server DateTime2 slechts 7 fractionele seconden precisie ondersteunt.

MongoDB-typetoewijzing

BSON-gegevenstype SQL Server-gegevenstype
Double float
Snaar / Touwtje nvarchar
Binaire gegevens nvarchar
ObjectID nvarchar
Booleaan bit
Datum datetime2
32-bit geheel getal int
Tijdstempel nvarchar
64-bits geheel getal bigint
Decimaal 128 decimal
DBPointer nvarchar
JavaScript nvarchar
Max Key nvarchar
Min-sleutel nvarchar
Symbol nvarchar
Reguliere expressie nvarchar
Niet-gedefinieerd/NULL nvarchar

MongoDB gebruikt BSON-documenten om gegevensrecords op te slaan. In tegenstelling tot de vorige scenario's is BSON schemaloos en ondersteunt het insluiten van documenten en matrices in andere documenten. Dit biedt de gebruiker flexibiliteit.

Teradata-typetoewijzingsreferentie

Teradata-gegevenstype SQL Server-gegevenstype
INTEGER int
SMALLINT smallint
BIGINT bigint
BYTEINT smallint
DECIMAL decimal
FLOAT decimal
BYTE binary
VARBYTE varbinary
BLOB varbinary
CHAR nchar
CLOB nvarchar
VARCHAR nvarchar
Graphic nchar
JSON nvarchar
VARGRAPHIC nvarchar
DATE date
TIMESTAMP datetime2
TIME time
TIME WITH TIME ZONE time
TIMESTAMP WITH TIME ZONE time