Typzuordnung mit PolyBase

Gilt für: SQL Server (nur Windows) Not supported. Azure SQL-Datenbank Not supported. Azure Synapse Analytics Not supported. Analytics Platform System (PDW)

Dieser Artikel beschreibt die Zuordnung zwischen externen PolyBase-Datenquellen und SQL Server. Sie können diese Informationen verwenden, um externe Tabellen mit dem Transact-SQL-Befehl CREATE EXTERNAL TABLE richtig zu definieren.

Überblick

Wenn Sie eine externe Tabelle mit PolyBase erstellen, müssen die Spaltendefinitionen, einschließlich der Datentypen und der Anzahl von Spalten, den Daten in den externen Dateien entsprechen. Wenn ein Konflikt auftritt, werden die Dateizeilen beim Abfragen der tatsächlichen Daten abgelehnt.

Für externe Tabellen, die auf Dateien in externen Datenquellen verweisen, müssen die Spalten- und Typdefinitionen dem genauen Schema der externen Datei zugeordnet werden. Beim Definieren von Datentypen, die auf Daten verweisen, die in Hadoop/Hive gespeichert sind, verwenden Sie die folgenden Zuordnungen zwischen Datentypen von SQL und Hive und wandeln Sie den Typ in einen SQL-Datentyp um, wenn Sie daraus auswählen. Die Typen umfassen alle Versionen von Hive, sofern nicht anders angegeben.

Hinweis

SQL Server unterstützt den Datenwert unendlich von Hive nicht in beliebigen Konvertierungen. PolyBase schlägt mit einem Datentypkonvertierungsfehler fehl.

Hadoop-Typzuordnungsverweis

SQL-Datentyp .NET-Datentyp Hive-Datentyp Hadoop/Java-Datentyp1 Kommentare
TINYINT Byte tinyint ByteWritable Nur für unsignierte Zahlen.
smallint Int16 smallint ShortWritable
INT Int32 INT IntWritable
BIGINT Int64 BIGINT LongWritable
bit Boolean boolean BooleanWritable
float Double double DoubleWritable
real Single float FloatWritable
money Decimal double DoubleWritable
SMALLMONEY Decimal double DoubleWritable
NCHAR String

Char[]
Zeichenfolge Varchar
NVARCHAR String

Char[]
Zeichenfolge Varchar
char String

Char[]
Zeichenfolge Varchar
varchar String

Char[]
Zeichenfolge Varchar
binary Byte[] binary BytesWritable Gilt für Hive 0.8 und höher.
varbinary Byte[] binary BytesWritable Gilt für Hive 0.8 und höher.
date Datetime timestamp TimestampWritable
smalldatetime DateTime timestamp TimestampWritable
datetime2 DateTime timestamp TimestampWritable
datetime DateTime timestamp TimestampWritable
time TimeSpan timestamp TimestampWritable
Decimal Decimal Decimal BigDecimalWritable Gilt für Hive 0.11 und höher.

1 Ab SQL Server 2022 (16.x) wird Hadoop nicht mehr unterstützt.

Referenz zur Zuordnung von Parkett und Delta-Typen

Die Zuordnung externer Tabellentypen für Parkett und Delta zu SQL Server-Datentypen ist unten aufgeführt.

Parquet- und Delta Lake-Dateien enthalten Typbeschreibungen für die einzelnen Spalten. In der folgenden Tabelle wird beschrieben, wie Parquet-Typen den nativen SQL-Typen zugeordnet werden.

Parquet-Typ Logischer Parquet-Typ (Anmerkung) SQL-Datentyp
BOOLEAN bit
BINARY/BYTE_ARRAY varbinary
Double float
GLEITKOMMAZAHL real
INT32 INT
INT64 BIGINT
INT96 datetime2
FIXED_LEN_BYTE_ARRAY BINARY
BINARY UTF8 varchar *(UTF8-Sortierung)
BINARY STRING varchar *(UTF8-Sortierung)
BINARY ENUM varchar *(UTF8-Sortierung)
FIXED_LEN_BYTE_ARRAY UUID UNIQUEIDENTIFIER
BINARY DECIMAL Decimal
BINARY JSON varchar(8000) *(UTF8-Sortierung)
BINARY BSON Nicht unterstützt
FIXED_LEN_BYTE_ARRAY DECIMAL Decimal
BYTE_ARRAY INTERVAL Nicht unterstützt
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) Nicht unterstützt
INT64 TIMESTAMP (normalisiert in UTC) (MILLIS/MICROS) datetime2
INT64 TIMESTAMP (nicht normalisiert in UTC) (MILLIS/MICROS) bigint: Stellen Sie sicher, dass Sie den bigint-Wert explizit um den Offset der Zeitzone anpassen, bevor Sie ihn in einen datetime-Wert konvertieren.
INT64 TIMESTAMP (NANOS) Nicht unterstützt
Komplexer Typ AUFLISTEN varchar(8000), serialisiert in JSON
Komplexer Typ MAP varchar(8000), serialisiert in JSON

Oracle-Typzuordnungsverweis

Oracle-Datentyp SQL Server-Typ
Float Float
NUMBER Float
NUMBER (p,s) Decimal (p, s)
LONG Nvarchar
BINARY_FLOAT Echt
BINARY_DOUBLE Float
CHAR Char
VARCHAR2 Varchar
NVARCHAR2 Nvarchar
RAW Varbinary
LONG RAW Varbinary
BLOB Varbinary
CLOB Varchar
NCLOB Nvarchar
ROWID Varchar
UROWID Varchar
DATE Datetime2
timestamp Datetime2

Typenkonflikt:

Float: Oracle unterstützt gleitkommagenauigkeit von 126, was niedriger als sql Server unterstützt (53). Daher kann Float (1-53) direkt zugeordnet werden, aber darüber hinaus kommt es zu Datenverlust durch Abschneidung.

Zeitstempel:
Zeitstempel und Zeitstempel mit lokaler Zeitzone in Oracle unterstützen 9 Bruchteile Sekunden Genauigkeit, während SQL Server DateTime2 nur 7 Sekunden Genauigkeit unterstützt.

MongoDB-Typzuordnung

BSON-Datentyp SQL Server-Typ
Double Float
String Nvarchar
Binärdaten Nvarchar
ObjectID Nvarchar
Boolean bit
Datum Datetime2
32-bit integer Int
Timestamp Nvarchar
64-Bit-Ganzzahl BigInt
Decimal 128 Decimal
DBPointer Nvarchar
JavaScript Nvarchar
Max Key Nvarchar
Min Key Nvarchar
Symbol Nvarchar
Regular Expression Nvarchar
Undefined/NULL Nvarchar

MongoDB verwendet BSON-Dokumente zur Speicherung von Datensätzen. Im Gegensatz zu den vorherigen Szenarios weist BSON kein Schema auf und unterstützt das Einbetten von Dokumenten und Arrays in andere Dokumente. Dadurch ist der Benutzer flexibler.

Teradata-Typzuordnungsverweis

Teradata-Datentyp SQL Server-Typ
INTEGER Int
SMALLINT SmallInt
BIGINT BigInt
BYTEINT SmallInt
DECIMAL Decimal
FLOAT Dezimal
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

Nächste Schritte

Weitere Informationen zur Verwendung finden Sie im Transact-SQL-Referenzartikel für CREATE EXTERNAL TABLE.