Mapeamento de tipo com o PolyBase
Aplica-se a: SQL Server (somente Windows) Banco de Dados SQL do Azure Azure Synapse Analytics 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.
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de