PolyBase を使用した型マッピング

適用対象: SQL Server (Windows のみ) Not supported. Azure SQL DatabaseNot supported. Azure Synapse Analytics Not supported. Analytics Platform System (PDW)

この記事では、PolyBase 外部データ ソースと SQL Server 間のマッピングについて説明します。 この情報を使用して、CREATE EXTERNAL TABLE Transact-SQL コマンドで外部テーブルを正しく定義できます。

概要

PolyBase を使用して外部テーブルを作成する場合、データ型や列の数などの列の定義は、外部ファイル内のデータと一致している必要があります。 不一致がある場合、実際のデータに対してクエリを実行するときに、ファイルの行が拒否されます。

外部データ ソース内のファイルを参照する外部のテーブルでは、列と型の定義は、外部ファイルの正確なスキーマにマップする必要があります。 Hadoop/Hive に格納されているデータを参照するデータの種類を定義する場合は、SQL、および Hive のデータ型の間では、次のマッピングを使用し、そこから選択するときに、SQL のデータ型に型をキャストします。 型には、特にそれ以外の場合に記されていない、Hive のすべてのバージョンが含まれます。

Note

SQL Server では、いずれの変換でも Hive の infinityのデータ値をサポートしていません。 PolyBase はデータ型変換エラーで失敗します。

Hadoop 型マッピング リファレンス

SQL データ型 .NET データ型 Hive データ型 Hadoop と Java のデータ型1 Comments
tinyint Byte tinyint ByteWritable 符号なし数値の場合のみです。
smallint Int16 smallint ShortWritable
INT Int32 int IntWritable
bigint Int64 bigint LongWritable
bit Boolean boolean BooleanWritable
float Double 倍精度浮動小数点 DoubleWritable
real Single float FloatWritable
money Decimal 倍精度浮動小数点 DoubleWritable
smallmoney Decimal (10 進数型) 倍精度浮動小数点 DoubleWritable
nchar String

Char[]
string Varchar
nvarchar String

Char[]
string Varchar
char String

Char[]
string Varchar
varchar String

Char[]
string Varchar
[バイナリ] Byte[] バイナリ BytesWritable Hive 0.8 以降に適用されます。
varbinary Byte[] バイナリ BytesWritable Hive 0.8 以降に適用されます。
日付 DateTime timestamp TimestampWritable
smalldatetime DateTime timestamp TimestampWritable
datetime2 DateTime timestamp TimestampWritable
datetime DateTime timestamp TimestampWritable
time TimeSpan timestamp TimestampWritable
decimal Decimal (10 進数型) 小数 BigDecimalWritable Hive0.11 以降が適用されます。

1 SQL Server 2022 (16.x) 以降、Hadoop はサポートされなくなります。

Parquet と Delta 型のマッピング リファレンス

SQL Server データ型への Parquet および Delta 外部テーブル型のマッピングを次に示します。

Parquet および Delta Lake ファイルには、すべての列の型の説明が含まれています。 次の表では、Parquet 型を SQL ネイティブ型にマップする方法について説明します。

Parquet 型 Parquet 論理型 (注釈) 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 *(UTF8 照合順序)
BINARY STRING varchar *(UTF8 照合順序)
BINARY ENUM varchar *(UTF8 照合順序)
FIXED_LEN_BYTE_ARRAY UUID UNIQUEIDENTIFIER
BINARY DECIMAL decimal
BINARY JSON varchar(8000) *(UTF8 照合順序)
BINARY BSON サポートされていません
FIXED_LEN_BYTE_ARRAY DECIMAL 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 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) サポートされていません
INT64 TIMESTAMP (UTC に正規化) (MILLIS/MICROS) datetime2
INT64 TIMESTAMP (UTC に非正規化) (MILLIS/MICROS) bigint - datetime 値に変換する前に、bigint 値がタイムゾーン オフセットで明示的に調整されていることを確認します。
INT64 TIMESTAMP (NANOS) サポートされていません
複合型 リスト varchar(8000)、JSON にシリアル化
複合型 MAP varchar(8000)、JSON にシリアル化

Oracle 型マッピング リファレンス

Oracle データ型 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

型の不一致

Float: Oracle では、浮動小数点精度 126 がサポートされます。これは SQL Server でサポートされる精度 (53) よりも低くなっています。 そのため、Float (1-53) は直接マップできますが、それを超えると切り捨てによるデータ損失が発生します。

Timestamp:
Oracle のタイムスタンプとローカル タイムゾーンのタイムスタンプでは秒の小数部に 9 桁の精度がサポートされますが、SQL Server の DateTime2 では秒の小数部に 7 桁の精度しかサポートされません。

MongoDB 型のマッピング

BSON データ型 SQL Server の型
倍精度浮動小数点型 Float
String Nvarchar
バイナリ データ Nvarchar
Object ID Nvarchar
Boolean ビット
Datetime2
32-bit integer int
タイムスタンプ Nvarchar
64 ビット整数 BigInt
Decimal 128 10 進法
DBPointer Nvarchar
JavaScript Nvarchar
Max Key Nvarchar
Min Key Nvarchar
記号 Nvarchar
正規表現 Nvarchar
未定義/NULL Nvarchar

MongoDB では、BSON ドキュメントを使用して、データ レコードを格納します。 前のシナリオとは異なり、BSON はスキーマがなく、ドキュメントおよび他のドキュメント内の配列の埋め込みをサポートしています。 これによりユーザーに柔軟性を提供します。

Teradata 型マッピング リファレンス

Teradata データ型 SQL Server の型
INTEGER int
SMALLINT SmallInt
BIGINT BigInt
BYTEINT SmallInt
DECIMAL Decimal (10 進数型)
FLOAT 10 進法
BYTE バイナリ
VARBYTE Varbinary
BLOB varbinary
CHAR Nchar
CLOB Nvarchar
VARCHAR Nvarchar
Graphic Nchar
JSON Nvarchar
VARGRAPHIC Nvarchar
DATE
TIMESTAMP Datetime2
TIME 時刻
TIME WITH TIME ZONE 時刻
TIMESTAMP WITH TIME ZONE 時刻

次のステップ

これを使用する方法について詳しくは、CREATE EXTERNAL TABLE に関する Transact-SQL 参照記事をご覧ください。