Ketik pemetaan dengan PolyBase

Berlaku untuk: SQL Server (khusus Windows) Not supported. Azure SQL DatabaseNot supported.Azure Synapse Analytics Analytics Not supported. Platform System (PDW)

Artikel ini menjelaskan pemetaan antara sumber data eksternal PolyBase dan SQL Server. Anda dapat menggunakan informasi ini untuk menentukan tabel eksternal dengan benar dengan perintah CREATE EXTERNAL TABLE Transact-SQL.

Gambaran Umum

Saat Anda membuat tabel eksternal dengan PolyBase, definisi kolom, termasuk jenis data dan jumlah kolom, harus cocok dengan data dalam file eksternal. Jika ada ketidakcocokan, baris file ditolak saat mengkueri data aktual.

Untuk tabel eksternal yang mereferensikan file di sumber data eksternal, definisi kolom dan jenis harus dipetakan ke skema file eksternal yang tepat. Saat menentukan jenis data yang mereferensikan data yang disimpan di Hadoop/Apache Hive, gunakan pemetaan berikut antara jenis data SQL dan Apache Hive dan transmisikan jenis ke dalam jenis data SQL saat memilih darinya. Jenisnya mencakup semua versi Apache Hive kecuali dinyatakan sebaliknya.

Catatan

SQL Server tidak mendukung nilai data infinity Apache Hive dalam konversi apa pun. PolyBase akan gagal dengan kesalahan konversi jenis data.

Referensi pemetaan Jenis Hadoop

Jenis data SQL Tipe Data .NET Tipe Data Apache Hive Hadoop/Java Data Type1 Komentar
tinyint Byte tinyint ByteWritable Hanya untuk angka yang tidak ditandatangani.
smallint Int16 smallint Dapat Ditulis Pendek
int Int32 int IntWritable
bigint Int64 bigint Dapat Ditulis Panjang
bit Boolean Boolean BooleanWritable
float Laju ganda DoubleWritable
real Tunggal float FloatWritable
money Decimal ganda DoubleWritable
smallmoney Decimal ganda DoubleWritable
nchar String

Char[]
string Varchar
nvarchar String

Char[]
string Varchar
char String

Char[]
string Varchar
varchar String

Char[]
string Varchar
biner Byte[] biner BytesWritable Berlaku untuk Apache Hive 0.8 dan yang lebih baru.
varbinary Byte[] biner BytesWritable Berlaku untuk Apache Hive 0.8 dan yang lebih baru.
date DateTime rentang waktu TimestampWritable
smalldatetime DateTime rentang waktu TimestampWritable
tanggalwaktu2 DateTime rentang waktu TimestampWritable
datetime DateTime rentang waktu TimestampWritable
waktu TimeSpan rentang waktu TimestampWritable
desimal Decimal desimal BigDecimalWritable Berlaku untuk Hive0.11 dan yang lebih baru.

1 Mulai SQL Server 2022 (16.x) Hadoop tidak lagi didukung.

Referensi pemetaan Jenis Parquet dan Delta

Pemetaan jenis tabel eksternal Parquet dan Delta ke jenis data SQL Server tercantum di bawah ini.

File Parquet dan Delta Lake berisi deskripsi jenis untuk setiap kolom. Tabel berikut menjelaskan cara jenis Parquet dipetakan ke jenis asli SQL.

Jenis parket Jenis logika parket (anotasi) Tipe data SQL
BOOLEAN bit
BINARY / BYTE_ARRAY varbinary
DOUBLE float
FLOAT real
INT32 int
INT64 bigint
INT96 tanggalwaktu2
FIXED_LEN_BYTE_ARRAY biner
BINER UTF8 varchar *(UTF8 collation)
BINER STRING varchar *(UTF8 collation)
BINER ENUM varchar *(UTF8 collation)
FIXED_LEN_BYTE_ARRAY UUID uniqueidentifier
BINER DECIMAL desimal
BINER JSON varchar(8000) *(kolase UTF8 )
BINER BSON Tidak didukung
FIXED_LEN_BYTE_ARRAY DECIMAL desimal
BYTE_ARRAY INTERVAL Tidak didukung
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 TANGGAL date
INT32 DECIMAL desimal
INT32 WAKTU (MILLIS) waktu
INT64 INT(64, true) bigint
INT64 INT(64, false) decimal(20,0)
INT64 DECIMAL desimal
INT64 TIME (MICROS) waktu
INT64 WAKTU (NANOS) Tidak didukung
INT64 TANDA WAKTU (dinormalisasi menjadi utc) (MILLIS / MICROS) tanggalwaktu2
INT64 TANDA WAKTU (tidak dinormalisasi ke utc) (MILLIS / MICROS) bigint - pastikan Anda secara eksplisit menyesuaikan nilai bigint dengan offset zona waktu sebelum mengonversinya menjadi nilai tanggal-waktu.
INT64 TANDA WAKTU (NANOS) Tidak didukung
Jenis Kompleks LIST varchar(8000), diserialisasikan ke JSON
Jenis Kompleks PETA varchar(8000), diserialisasikan ke JSON

Referensi pemetaan Jenis Oracle

Jenis data Oracle Jenis SQL Server
Float Float
NUMBER Float
ANGKA (p,s) Desimal (p, s)
LONG Nvarchar
BINARY_FLOAT Riil
BINARY_DOUBLE Float
CHAR Char
VARCHAR2 Varchar
NVARCHAR2 Nvarchar
RAW Varbinary
RAW PANJANG Varbinary
BLOB Varbinary
CLOB Varchar
NCLOB Nvarchar
ROWID Varchar
UROWID Varchar
TANGGAL Tanggalwaktu2
TANDA WAKTU Tanggalwaktu2

Ketidakcocokan jenis

Float: Oracle mendukung presisi floating point 126, yang lebih rendah dari yang didukung SQL Server (53). Oleh karena itu, Float (1-53) dapat dipetakan secara langsung, tetapi di luar itu, ada kehilangan data karena pemotongan.

Timestamp:
Tanda waktu dan Tanda Waktu dengan zona waktu lokal di Oracle mendukung presisi 9 detik pecahan sedangkan, SQL Server DateTime2 hanya mendukung presisi 7 detik pecahan.

Pemetaan Jenis MongoDB

Jenis data BSON Jenis SQL Server
Laju Float
String Nvarchar
Data biner Nvarchar
ID Objek Nvarchar
Boolean Bit
Date Tanggalwaktu2
bilangan bulat 32-bit Int
Tanda Waktu Nvarchar
bilangan bulat 64-bit Bigint
Desimal 128 Decimal
DBPointer Nvarchar
JavaScript Nvarchar
Kunci Maks Nvarchar
Kunci Min Nvarchar
Simbol Nvarchar
Ekspresi Reguler Nvarchar
Tidak ditentukan/NULL Nvarchar

MongoDB menggunakan dokumen BSON untuk menyimpan rekaman data. Tidak seperti skenario sebelumnya, BSON tidak memiliki skema dan mendukung penyematan dokumen dan array dalam dokumen lain. Ini memberikan fleksibilitas kepada pengguna.

Referensi pemetaan Tipe Teradata

Tipe data Teradata Jenis SQL Server
INTEGER Int
SMALLINT SmallInt
BIGINT Bigint
BYTEINT SmallInt
DECIMAL Decimal
FLOAT Decimal
BYTE Biner
VARBYTE Varbinary
BLOB varbinary
CHAR Nchar
CLOB Nvarchar
VARCHAR Nvarchar
Graphic Nchar
JSON Nvarchar
VARGRAPHIC Nvarchar
TANGGAL Date
TANDA WAKTU Tanggalwaktu2
TIME Waktu
WAKTU DENGAN ZONA WAKTU Waktu
STEMPEL WAKTU DENGAN ZONA WAKTU Waktu

Langkah berikutnya

Untuk informasi selengkapnya tentang cara ini digunakan, lihat artikel referensi Transact-SQL untuk CREATE EXTERNAL TABLE.