Сопоставление типов с помощью PolyBase
Применимо: SQL Server (только для Windows) База данных SQL Azure Azure Synapse Analytics Analytics Platform System (PDW)
В этой статье описывается сопоставление между внешними источниками данных PolyBase и SQL Server. Эти сведения можно использовать, чтобы правильно определить внешние таблицы с помощью команды Transact-SQL CREATE EXTERNAL TABLE.
Обзор
При создании внешней таблицы с PolyBase определения столбцов, включая типы данных и количество столбцов, должны соответствовать данным во внешних файлах. Если есть несоответствие, строки файлов отклоняются при запросе фактических данных.
Во внешних таблицах, которые ссылаются на файлы во внешних источниках данных, определения столбцов и типов должны точно соответствовать схеме внешнего файла. При определении типов данных, которые ссылаются на данные, хранящиеся в Hadoop или Hive, используйте следующие сопоставления типов данных SQL и Hive и приведите тип к типу данных SQL при выборе. Типы включают все версии Hive, если не указано иное.
Примечание.
SQL Server не поддерживает тип данных Hive infinity в любых преобразованиях. PolyBase будет завершаться ошибкой преобразования типов данных.
Сопоставление типов Hadoop
Тип данных SQL | Тип данных .NET | Тип данных Hive | Тип данныхHadoop/Java 1 | Комментарии |
---|---|---|---|---|
tinyint | Байт | tinyint | ByteWritable | Только для чисел без знака. |
smallint | Int16 | smallint | ShortWritable | |
INT | Int32 | INT | IntWritable | |
bigint | Int64 | bigint | LongWritable | |
bit | Логический | boolean | BooleanWritable | |
с плавающей запятой | Двойной | двойной точности | DoubleWritable | |
real | Одна | с плавающей запятой | FloatWritable | |
money | Decimal | двойной точности | DoubleWritable | |
smallmoney | Decimal | двойной точности | DoubleWritable | |
nchar | Строка Char[] |
строка | Varchar | |
nvarchar | Строка Char[] |
строка | Varchar | |
char | Строка Char[] |
строка | Varchar | |
varchar | Строка Char[] |
строка | Varchar | |
binary | Byte[] | binary | BytesWritable | Применяется к Hive 0.8 и более поздней версии. |
varbinary | Byte[] | binary | BytesWritable | Применяется к Hive 0.8 и более поздней версии. |
Дата | Дата/время | TIMESTAMP | TimestampWritable | |
smalldatetime | Дата/время | TIMESTAMP | TimestampWritable | |
datetime2 | Дата/время | TIMESTAMP | TimestampWritable | |
datetime | DateTime | TIMESTAMP | TimestampWritable | |
Время | TimeSpan | TIMESTAMP | TimestampWritable | |
десятичное | Десятичное число | десятичное | BigDecimalWritable | Применяется к Hive 0.11 и более поздней версии. |
1 Начиная с SQL Server 2022 (16.x) Hadoop больше не поддерживается.
Справочник по сопоставлению типов Parquet и Delta
Сопоставление типов внешней таблицы Parquet и Delta с типами данных SQL Server приведены ниже.
Файлы Parquet и Delta Lake содержат описания типов для каждого столбца. В приведенной ниже таблице показано, как типы Parquet сопоставляются с собственными типами SQL.
Тип Parquet | Логический тип Parquet (заметка) | Тип данных SQL |
---|---|---|
BOOLEAN | bit | |
BINARY / BYTE_ARRAY | varbinary | |
DOUBLE | с плавающей запятой | |
FLOAT | real | |
INT32 | INT | |
INT64 | bigint | |
INT96 | datetime2 | |
FIXED_LEN_BYTE_ARRAY | binary | |
BINARY | UTF8 | varchar *(параметры сортировки UTF8) |
BINARY | STRING | varchar *(параметры сортировки UTF8) |
BINARY | ENUM | varchar *(параметры сортировки UTF8) |
FIXED_LEN_BYTE_ARRAY | UUID | uniqueidentifier |
BINARY | DECIMAL | десятичное |
BINARY | JSON | varchar(8000) *(параметры сортировки UTF8) |
BINARY | BSON | Не поддерживается |
FIXED_LEN_BYTE_ARRAY | DECIMAL | десятичное |
BYTE_ARRAY | INTERVAL | Не поддерживается |
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 | Дата |
INT32 | DECIMAL | десятичное |
INT32 | TIME (MILLIS) | Время |
INT64 | INT(64, true) | bigint |
INT64 | INT(64, false) | decimal(20,0) |
INT64 | DECIMAL | десятичное |
INT64 | TIME (MICROS) | Время |
INT64 | TIME (NANOS) | Не поддерживается |
INT64 | TIMESTAMP (нормализовано в формат UTC) (MILLIS / MICROS) | datetime2 |
INT64 | TIMESTAMP (не нормализовано в формат UTC) (MILLIS / MICROS) | bigint — убедитесь, что значение bigint явно отрегулировано с помощью смещения часового пояса, прежде чем преобразовать его в значение даты и времени (datetime). |
INT64 | TIMESTAMP (NANOS) | Не поддерживается |
Сложный тип | LIST | varchar(8000), сериализованный в JSON |
Сложный тип | MAP | varchar(8000), сериализованный в JSON |
Сопоставление типов Oracle
Тип данных Oracle | Тип SQL Server |
---|---|
Тип с плавающей запятой | Тип с плавающей запятой |
NUMBER | Тип с плавающей запятой |
NUMBER (p,s) | Decimal (p, s) |
LONG | Nvarchar |
BINARY_FLOAT | Вещественное число |
BINARY_DOUBLE | Тип с плавающей запятой |
CHAR | Char |
VARCHAR2 | Varchar |
NVARCHAR2 | Nvarchar |
НЕОБРАБОТАННЫЕ | Varbinary |
LONG RAW | Varbinary |
BLOB-объект | Varbinary |
CLOB | Varchar |
NCLOB | Nvarchar |
ROWID | Varchar |
UROWID | Varchar |
DATE | Дата и время2 |
TIMESTAMP | Дата и время2 |
Несоответствие типов
Float: Oracle поддерживает точность с плавающей запятой 126, которая ниже, чем то, что поддерживает SQL Server (53). Таким образом Float (1–53) можно сопоставить напрямую, но при этом существует потеря данных из-за усечения.
Метка времени:
Метка времени и метка времени с локальным часовом поясом в Oracle поддерживает точность 9 дробных секунд, в то время как SQL Server DateTime2 поддерживает только 7 дробных секунд.
Сопоставление типов MongoDB
Тип данных BSON | Тип SQL Server |
---|---|
Двойной | Тип с плавающей запятой |
Строка | Nvarchar |
Двоичные данные | Nvarchar |
Код объекта | Nvarchar |
Логический | бит |
Дата | Дата и время2 |
32-разрядное целое число | Int |
Метка времени | Nvarchar |
64-разрядное целое число | BigInt |
Decimal 128 | Десятичное число |
DBPointer | Nvarchar |
JavaScript | Nvarchar |
Максимальный ключ | Nvarchar |
Минимальный ключ | Nvarchar |
Символ | Nvarchar |
Регулярное выражение | Nvarchar |
Не определено/NULL | Nvarchar |
MongoDB использует документы BSON для хранения записей данных. В отличие от предыдущих сценариев, в BSON нет схемы и поддерживается внедрение документов и массивов в другие документы. Это обеспечивает гибкость для пользователя.
Сопоставление типов Teradata
Тип данных Teradata | Тип SQL Server |
---|---|
INTEGER | Int |
SMALLINT | SmallInt |
BIGINT | BigInt |
BYTEINT | SmallInt |
DECIMAL | Десятичное число |
FLOAT | Decimal |
BYTE | Binary |
VARBYTE | Varbinary |
BLOB-объект | varbinary |
CHAR | Nchar |
CLOB | Nvarchar |
VARCHAR | Nvarchar |
GRAPHIC | Nchar |
JSON | Nvarchar |
VARGRAPHIC | Nvarchar |
DATE | Дата |
TIMESTAMP | Дата и время2 |
TIME | Время |
TIME WITH TIME ZONE | Время |
TIMESTAMP WITH TIME ZONE | Время |
Следующие шаги
Дополнительные сведения об использовании сопоставления см. в справочнике по Transact-SQL для CREATE EXTERNAL TABLE (Transact-SQL).