Mappage des types avec PolyBase

S’applique à : SQL Server (Windows uniquement) Not supported. Azure SQL DatabaseNot supported. Azure Synapse Analytics Not supported. Analytics Platform System (PDW)

Cet article décrit le mappage entre des sources de données externes PolyBase et SQL Server. Vous pouvez utiliser ces informations pour définir correctement les tables externes avec la commande Transact-SQL CREATE EXTERNAL TABLE.

Vue d’ensemble

Lorsque vous créez une table externe avec PolyBase, les définitions de colonnes, y compris les types de données et le nombre de colonnes, doivent correspondre aux données dans les fichiers externes. S’il existe une incompatibilité, les lignes de fichier sont rejetées lors de l’interrogation des données réelles.

Pour les tables externes qui référencent des fichiers provenant de sources de données externes, les définitions de colonne et de type doivent correspondre exactement au schéma du fichier externe. Lorsque vous définissez des types de données qui référencent des données stockées dans Hadoop/Hive, utilisez les mappages suivants entre les types de données SQL et Hive, et castez le type en un type de données SQL lorsque vous sélectionnez des données. Les types incluent toutes les versions de Hive, sauf indication contraire.

Remarque

SQL Server ne prend pas en charge la valeur de données infinie Hive lors des conversions. Si vous l’utilisez, PolyBase échoue et émet une erreur de conversion de type de données.

Informations de référence sur le mappage des types Hadoop

Type de données SQL Type de données .NET Type de données Hive Hadoop/Java Data Type1 Commentaires
TINYINT Byte tinyint ByteWritable Pour les nombres non signés.
SMALLINT Int16 smallint ShortWritable
int Int32 int IntWritable
bigint Int64 bigint LongWritable
bit Boolean booléen BooleanWritable
virgule flottante Double double DoubleWritable
real Unique virgule flottante FloatWritable
money Decimal double DoubleWritable
SMALLMONEY Décimal double DoubleWritable
NCHAR String

Char[]
string Varchar
NVARCHAR String

Char[]
string Varchar
char String

Char[]
string Varchar
varchar String

Char[]
string Varchar
binary Byte[] binary BytesWritable S’applique à Hive 0.8 et versions ultérieures
varbinary Byte[] binary BytesWritable S’applique à Hive 0.8 et versions ultérieures
date DateTime timestamp TimestampWritable
smalldatetime Date/Heure timestamp TimestampWritable
datetime2 Date/Heure timestamp TimestampWritable
DATETIME Date/Heure timestamp TimestampWritable
time TimeSpan timestamp TimestampWritable
Décimal Decimal decimal BigDecimalWritable S’applique à Hive 0.11 et versions ultérieures

1 Depuis SQL Server 2022 (16.x) Hadoop n’est plus pris en charge.

Informations de référence sur le mappage de type Parquet et Delta

Le mappage de type de table externe Parquet et Delta aux types de données SQL Server est répertorié ci-dessous.

Les fichiers Parquet et Delta Lake contiennent des descriptions de type pour chaque colonne. Le tableau suivant explique comment les types Parquet sont mappés aux types SQL natifs.

Type Parquet Type logique Parquet (annotation) Type de données SQL
BOOLEAN bit
BINARY / BYTE_ARRAY varbinary
DOUBLE float
FLOAT real
INT32 int
INT64 bigint
INT96 datetime2
FIXED_LEN_BYTE_ARRAY binary
BINARY UTF8 varchar *(classement UTF8)
BINARY STRING varchar *(classement UTF8)
BINARY ENUM varchar *(classement UTF8)
FIXED_LEN_BYTE_ARRAY UUID UNIQUEIDENTIFIER
BINARY DECIMAL Décimal
BINARY JSON varchar(8000) *(classement UTF8)
BINARY BSON Non pris en charge
FIXED_LEN_BYTE_ARRAY DECIMAL Décimal
BYTE_ARRAY INTERVAL Non pris en charge
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 Décimal
INT32 TIME (MILLIS) time
INT64 INT(64, true) bigint
INT64 INT(64, false) decimal(20,0)
INT64 DECIMAL Décimal
INT64 TIME (MICROS) time
INT64 TIME (NANOS) Non pris en charge
INT64 TIMESTAMP (normalisé en UTC) (MILLIS / MICROS) datetime2
INT64 TIMESTAMP (non normalisé en UTC) (MILLIS / MICROS) bigint : veillez à ajuster la valeur bigint explicitement avec le décalage de fuseau horaire avant de la convertir en valeur datetime.
INT64 TIMESTAMP (NANOS) Non pris en charge
Type complexe Liste varchar(8000), sérialisé en JSON
Type complexe MAP varchar(8000), sérialisé en JSON

Informations de référence sur le mappage des types Oracle

Type de données Oracle Type SQL Server
Float Float
NUMBER Float
NUMBER (p,s) Decimal (p, s)
LONG Nvarchar
BINARY_FLOAT Real
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

Incompatibilité des types

Float : Oracle prend en charge la précision à virgule flottante de 126, qui est inférieure à ce que SQL Server prend en charge (53). Ainsi, Float (1-53) peut être mappé directement. Au delà, des données sont perdues en raison de la troncation.

TimeStamp :
L’horodatage et l’horodatage avec fuseau horaire local dans Oracle prennent en charge une précision de 9 fractions de seconde, tandis que SQL Server DateTime2 ne prend en charge que 7 secondes fractionnaires de précision.

Mappage de type MongoDB

Type de données BSON Type SQL Server
Double Float
Chaîne Nvarchar
Données binaires Nvarchar
ID de l'objet Nvarchar
Boolean bit
Date Datetime2
Entier de 32 bits Int
Horodateur Nvarchar
Entier 64 bits BigInt
Decimal 128 Décimal
DBPointer Nvarchar
JavaScript Nvarchar
Clé maximale Nvarchar
Clé minimale Nvarchar
Symbole Nvarchar
Expression régulière Nvarchar
Non défini/NULL Nvarchar

MongoDB utilise les documents BSON pour stocker les enregistrements de données. Contrairement aux scénarios précédents, BSON est sans schéma et prend en charge l’incorporation de documents et de tableaux dans d’autres documents. Cela apporte plus de souplesse à l’utilisateur.

Informations de référence sur le mappage des types Teradata

Type de données Teradata Type SQL Server
INTEGER Int
SMALLINT SmallInt
BIGINT BigInt
BYTEINT SmallInt
DECIMAL Decimal
FLOAT Décimal
BYTE Binaire
VARBYTE Varbinary
BLOB varbinary
CHAR Nchar
CLOB Nvarchar
VARCHAR Nvarchar
Graphic Nchar
JSON Nvarchar
VARGRAPHIC Nvarchar
DATE Date
TIMESTAMP Datetime2
TIME Temps
TIME WITH TIME ZONE Temps
TIMESTAMP WITH TIME ZONE Temps

Étapes suivantes

Pour plus d’informations sur l’utilisation de ces paramètres, consultez l’article de référence sur Transact-SQL pour CREATE EXTERNAL TABLE.