Asignación de tipos con PolyBase
SE APLICA A:
SQL Server (solo Windows)
Azure SQL Database
Azure Synapse Analytics
Almacenamiento de datos paralelos
En este artículo se describe la asignación entre los orígenes de datos externos de PolyBase y SQL Server. Puede usar esta información para definir correctamente las tablas externas con el comando de Transact-SQL CREATE EXTERNAL TABLE.
Información general
A la hora de crear una tabla externa con PolyBase, las definiciones de columna, incluidos los tipos de datos y el número de columnas, deben coincidir con los datos de los archivos externos. Si hay alguna no coincidencia, se rechazarán las filas de archivo al consultar los datos reales.
En tablas externas que hacen referencia a archivos de orígenes de datos externos, las definiciones de columna y tipo deben asignarse al esquema exacto del archivo externo. Al definir tipos de datos que hacen referencia a datos almacenados en Hadoop/Hive, use las siguientes asignaciones entre tipos de datos SQL y Hive y convierta el tipo a un tipo de datos SQL cuando seleccione desde él. Los tipos incluyen todas las versiones de Hive, a menos que se indique lo contrario.
Nota
SQL Server no admite el valor de datos infinity de Hive en ninguna conversión. En PolyBase se produce un error de conversión de tipo de datos.
Referencia de asignación de tipos de Hadoop
| Tipo de datos de SQL | Tipo de datos de .NET | Tipo de datos de Hive | Hadoop/Java Data Type | Comentarios |
|---|---|---|---|---|
| TINYINT | Byte | TINYINT | ByteWritable | Solo para números sin signo. |
| 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[] |
string | Varchar | |
| NVARCHAR | String Char[] |
string | Varchar | |
| char | String Char[] |
string | Varchar | |
| varchar | String Char[] |
string | Varchar | |
| binary | Byte[] | binary | BytesWritable | Se aplica a Hive 0.8 y posterior. |
| varbinary | Byte[] | binary | BytesWritable | Se aplica a Hive 0.8 y 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 | Se aplica a Hive 0.11 y posterior. |
Referencia de asignación de tipos de Oracle
| Tipo de datos 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 |
Error de coincidencia de tipos
Float: Oracle admite una precisión de punto flotante de 126, que es menor que la que admite SQL Server (53). Por lo tanto, Float (1-53) se puede asignar directamente, pero si se asigna un valor mayor, se experimentará una pérdida de datos debido al truncamiento.
Marca de tiempo: marca de tiempo y marca de tiempo con zona horaria local en Oracle admiten una precisión de 9 fracciones de segundo, mientras que SQL Server DateTime2 solo admite una precisión de 7 fracciones de segundo.
Asignación de tipo MongoDB
| Tipo de datos BSON | Tipo de SQL Server |
|---|---|
| Double | Float |
| String | nvarchar |
| Datos binarios | nvarchar |
| Id. de objeto | nvarchar |
| Boolean | bit |
| Date | Datetime2 |
| Entero de 32 bits | Int |
| Timestamp | nvarchar |
| Entero de 64 bits | BigInt |
| Decimal 128 | Decimal |
| DBPointer | nvarchar |
| JavaScript | nvarchar |
| Clave Max | nvarchar |
| Clave Min | nvarchar |
| Símbolo | nvarchar |
| Expresión regular | nvarchar |
| Sin definir/NULL | nvarchar |
MongoDB usa documentos BSON para almacenar los registros de datos. A diferencia de los escenarios anteriores, BSON carece de esquema y admite la incrustación de documentos y matrices en otros documentos. Esto proporciona flexibilidad al usuario.
Referencia de asignación de tipos de Teradata
| Tipo de datos de Teradata | Tipo de SQL Server |
|---|---|
| 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 | Hora |
Pasos siguientes
Para obtener más información sobre cómo se usa, consulte el artículo de referencia de Transact-SQL relativo a CREATE EXTERNAL TABLE.