Mapeamento de tipo com o PolyBase

Aplica-se a: SQL Server (somente Windows) Not supported. Banco de Dados SQL do Azure Not supported. Azure Synapse Analytics Not supported. PDW (Analytics Platform System)

Este artigo descreve o mapeamento entre fontes de dados externas do PolyBase e o SQL Server. Você pode usar essas informações para definir corretamente as tabelas externas com o comando Transact-SQL CREATE EXTERNAL TABLE.

Visão geral

Ao criar uma tabela externa com o PolyBase, as definições de coluna, incluindo os tipos de dados e o número de colunas, devem corresponder aos dados nos arquivos externos. Se houver uma incompatibilidade, as linhas do arquivo serão rejeitadas ao consultar os dados reais.

Para tabelas externas que referenciam arquivos em fontes de dados externas, as definições de coluna e tipo devem ser mapeadas para o esquema exato do arquivo externo. Ao definir tipos de dados que referenciam dados armazenados no Hadoop/Hive, use os mapeamentos a seguir entre tipos de dados SQL e Hive e converta o tipo em um tipo de dados SQL ao selecionar uma opção nele. Os tipos incluem todas as versões do Hive, a menos que indicado de outra forma.

Observação

O SQL Server não dá suporte ao valor de dados infinity do Hive em uma conversão. O PolyBase falhará com um erro de conversão de tipo de dados.

Referência de mapeamento de tipos Hadoop

Tipo de dados SQL Tipo de dados .NET Tipo de dados do Hive Tipo 1 de dados do Hadoop/Java Comentários
TINYINT Byte tinyint ByteWritable Apenas para números sem sinal.
SMALLINT Int16 smallint ShortWritable
INT Int32 int IntWritable
BIGINT Int64 bigint LongWritable
bit Booliano boolean BooleanWritable
FLOAT Double double DoubleWritable
real Único float FloatWritable
money Decimal double DoubleWritable
SMALLMONEY Decimal 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 Aplica-se ao Hive 0.8 e posterior.
varbinary Byte[] binary BytesWritable Aplica-se ao Hive 0.8 e posterior.
date Datetime timestamp TimestampWritable
smalldatetime DateTime timestamp TimestampWritable
datetime2 DateTime timestamp TimestampWritable
datetime DateTime timestamp TimestampWritable
time TimeSpan timestamp TimestampWritable
decimal Decimal decimal BigDecimalWritable Aplica-se ao Hive 0.11 e posterior.

1 A partir do SQL Server 2022 (16.x), o Hadoop não é mais compatível.

Referência de mapeamento de tipos Parquet e Delta

O mapeamento de tipos de tabela externa Parquet e Delta para tipos de dados do SQL Server está listado abaixo.

Os arquivos Parquet e Delta Lake contêm descrições de tipo para cada coluna. A tabela a seguir descreve como os tipos Parquet são mapeados para tipos nativos do SQL.

Tipo do Parquet Tipo lógico do Parquet (anotação) Tipo de dados 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 *(ordenação UTF8)
BINARY STRING varchar *(ordenação UTF8)
BINARY ENUM varchar *(ordenação UTF8)
FIXED_LEN_BYTE_ARRAY UUID UNIQUEIDENTIFIER
BINARY DECIMAL decimal
BINARY JSON varchar(8000) *(agrupamento UTF8)
BINARY BSON Sem suporte
FIXED_LEN_BYTE_ARRAY DECIMAL decimal
BYTE_ARRAY INTERVAL Sem suporte
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) Sem suporte
INT64 TIMESTAMP (normalizado para UTC) (MILLIS/MICROS) datetime2
INT64 TIMESTAMP (não normalizado para UTC) (MILLIS/MICROS) bigint – Lembre-se de ajustar explicitamente o valor bigint com a diferença de fuso horário antes de convertê-lo em um valor de datetime.
INT64 TIMESTAMP (NANOS) Sem suporte
Tipo complexo LISTA varchar(8000), serializado em JSON
Tipo complexo MAP varchar(8000), serializado em JSON

Referência de mapeamento de tipos Oracle

Tipo de dados de Oracle Tipo de 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

Tipos incompatíveis

Flutuante: o Oracle oferece suporte à precisão de ponto flutuante de 126, que é menor do que o SQL Server suporta (53). Portanto, Float (1 a 53) pode ser mapeado diretamente, porém, além disso, ocorre perda de dados devido ao truncamento.

Carimbo de data/hora:
Carimbo de data/hora e carimbo de data/hora com fuso horário local no Oracle são compatíveis com a precisão de 9 segundos fracionários, enquanto o DateTime2 do SQL Server é compatível com uma precisão de apenas 7 segundos fracionários.

Mapeamento de tipo do MongoDB

Tipo de dados BSON Tipo de SQL Server
Double Float
String Nvarchar
Dados binários Nvarchar
ID de objeto Nvarchar
Booliano bit
Data Datetime2
Inteiro de 32 bits Int
Carimbo de data/hora Nvarchar
Inteiro de 64 bits BigInt
Decimal 128 Decimal
DBPointer Nvarchar
JavaScript Nvarchar
Chave máxima Nvarchar
Chave mínima Nvarchar
Símbolo Nvarchar
Expressão Regular Nvarchar
Indefinido/NULO Nvarchar

O MongoDB usa documentos BSON para armazenar os registros de dados. Diferentemente de cenários anteriores, o BSON é sem esquema e dá suporte à inserção de documentos e matrizes em outros documentos. Isso proporciona flexibilidade ao usuário.

Referência de mapeamento de tipos Teradata

Tipo de dados Teradata Tipo de SQL Server
INTEGER Int
SMALLINT SmallInt
bigint BigInt
BYTEINT SmallInt
DECIMAL Decimal
FLOAT Decimal
BYTE Binário
VARBYTE Varbinary
BLOB varbinary
CHAR Nchar
CLOB Nvarchar
VARCHAR Nvarchar
Graphic Nchar
JSON Nvarchar
VARGRAPHIC Nvarchar
DATE Data
TIMESTAMP Datetime2
TIME Hora
TIME WITH TIME ZONE Hora
TIMESTAMP WITH TIME ZONE Hora

Próximas etapas

Para obter mais informações sobre como isso é usado, consulte o artigo de referência do Transact-SQL sobre CREATE EXTERNAL TABLE.