Strategi pemuatan data untuk kumpulan SQL khusus di Azure Synapse Analytics

Kumpulan SQL khusus SMP tradisional menggunakan proses Ekstrak, Transformasi, dan Beban (ETL) untuk memuat data. Synapse SQL, dalam Azure Synapse Analytics, menggunakan arsitektur pemrosesan kueri terdistribusi yang memanfaatkan skalabilitas dan fleksibilitas sumber daya komputasi dan penyimpanan.

Menggunakan proses Ekstrak, Muat, dan Transformasi (ELT) yang memanfaatkan kemampuan pemrosesan kueri terdistribusi bawaan dan menghilangkan sumber daya yang diperlukan untuk transformasi data sebelum memuat.

Sementara kumpulan SQL khusus mendukung banyak metode pemuatan, termasuk opsi SQL Server populer seperti bcp dan SqlBulkCopy API,cara tercepat dan paling terukur untuk memuat data adalah melalui tabel eksternal PolyBase dan pernyataan SALIN.

Dengan PolyBase dan pernyataan SALIN, Anda dapat mengakses data eksternal yang disimpan di Azure Blob Storage atau Azure Data Lake Storage melalui bahasa T-SQL. Untuk fleksibilitas terbanyak saat memuat, sebaiknya gunakan pernyataan SALIN.

Apa itu ELT?

Extract, Load, dan Transform (ELT) adalah proses di mana data diekstrak dari sistem sumber, dimuat ke dalam kumpulan SQL khusus, dan kemudian diubah.

Langkah dasar untuk mengimplementasikan ELT adalah:

  1. Ekstrak data sumber daya ke dalam file teks.
  2. Muat data ke Azure Blob Storage atau Azure Data Lake Storage.
  3. Siapkan data untuk dimuat.
  4. Muat data ke dalam tabel penahapan dengan PolyBase atau perintah SALIN.
  5. Mengubah data.
  6. Sisipkan data ke dalam tabel produksi.

Untuk tutorial pemuatan, lihat memuat data dari penyimpanan blob Microsoft Azure.

1. Ekstrak data sumber ke dalam file teks

Mengeluarkan data dari sistem sumber daya Anda bergantung pada lokasi penyimpanan. Tujuannya adalah untuk memindahkan data ke dalam teks yang dibatasi yang didukung atau file CSV.

Format file yang didukung

Dengan PolyBase dan pernyataan SALIN Anda dapat memuat data dari teks yang dibatasi UTF-8 dan UTF-16 atau file CSV yang dikodekan. Selain teks yang dibatasi atau file CSV, file dimuat dari format file Hadoop seperti ORC dan Parquet. PolyBase dan pernyataan SALIN juga dapat memuat data dari file terkompresi Gzip dan Snappy.

ASCII yang diperluas, format lebar tetap, dan format berlapis seperti WinZip atau XML tidak didukung. Jika Anda mengekspor dari Microsoft SQL Server, Anda dapat menggunakan alat baris perintah bcp untuk mengekspor data ke file teks yang dibatasi.

2. Muat data ke Azure Data Lake Storage atau Azure Blob Storage

Untuk mendapatkan data di penyimpanan Microsoft Azure, Anda dapat memindahkannya ke Azure Blob Storage atau Azure Data Lake Store Gen2. Di salah satu lokasi, data harus disimpan dalam file teks. PolyBase dan pernyataan SALIN dapat dimuat dari salah satu lokasi.

Alat dan layanan yang bisa Anda gunakan untuk memindahkan data ke Microsoft Azure Storage:

  • Layanan Azure ExpressRoute meningkatkan throughput jaringan, performa, dan prediktabilitas. ExpressRoute adalah layanan yang merutekan data Anda melalui koneksi privat khusus ke Microsoft Azure. Koneksi ExpressRoute tidak merutekan data melalui internet publik. Koneksi ExpressRoute menawarkan lebih banyak keandalan, kecepatan lebih cepat, latensi lebih rendah, dan keamanan lebih tinggi daripada koneksi biasa melalui internet publik.
  • Utilitas AzCopy memindahkan data ke Microsoft Azure Storage melalui internet publik. Pemindahan ini berfungsi jika ukuran data Anda kurang dari 10 TB. Untuk melakukan pemuatan secara teratur dengan AzCopy, uji kecepatan jaringan untuk melihat apakah itu dapat diterima.
  • Azure Data Factory (ADF) memiliki gateway yang bisa Anda pasang di server lokal Anda. Kemudian Anda dapat membuat alur untuk memindahkan data dari server lokal Anda ke Microsoft Azure Storage. Untuk menggunakan Azure Data Factory dengan kumpulan SQL khusus, lihat Memuat data untuk kumpulan SQL khusus.

3. Siapkan data untuk dimuat

Anda mungkin perlu menyiapkan dan membersihkan data di akun penyimpanan Anda sebelum memuat. Persiapan data dapat dilakukan saat data Anda berada di sumbernya, saat Anda mengekspor data ke file teks, atau setelah data berada di Microsoft Azure Storage. Paling mudah untuk bekerja dengan data sedini mungkin dalam proses.

Menentukan tabel

Anda harus terlebih dahulu menentukan tabel yang Anda muat di kumpulan SQL khusus Anda saat menggunakan pernyataan COPY.

Jika Anda menggunakan PolyBase, Anda perlu menentukan tabel eksternal di kumpulan SQL khusus Anda sebelum memuat. PolyBase menggunakan tabel eksternal untuk menentukan dan mengakses data di Microsoft Azure Storage. Tabel eksternal mirip dengan tampilan database. Tabel eksternal berisi skema tabel dan menunjuk ke data yang disimpan di luar kumpulan SQL khusus.

Menentukan tabel eksternal yang melibatkan penentuan sumber data, format file teks, dan definisi tabel. Artikel referensi sintaks T-SQL yang Anda butuhkan adalah:

Gunakan pemetaan jenis data SQL berikut saat memuat file Parquet:

Jenis Parquet Jenis logika Parquet (anotasi) Jenis data SQL
BOOLEAN bit
BINARY/BYTE_ARRAY varbinary
DOUBLE float
FLOAT real
INT32 int
INT64 bigint
INT96 datetime2
FIXED_LEN_BYTE_ARRAY binary
BINARY UTF8 nvarchar
BINER STRING nvarchar
BINER ENUM nvarchar
BINER UUID uniqueidentifier
BINARY DESIMAL decimal
BINARY JSON nvarchar(MAX)
BINER BSON varbinary(max)
FIXED_LEN_BYTE_ARRAY DESIMAL decimal
BYTE_ARRAY INTERVAL varchar(maks),
INT32 INT(8, benar) smallint
INT32 INT(16, true) smallint
INT32 INT(32, benar) int
INT32 INT(8, false) tinyint
INT32 INT(16, salah) int
INT32 INT(32, false) bigint
INT32 TANGGAL tanggal
INT32 DESIMAL decimal
INT32 TIME (MILLIS ) waktu
INT64 INT(64, true) bigint
INT64 INT(64, false ) decimal(20,0)
INT64 DESIMAL decimal
INT64 WAKTU (MILLIS) waktu
INT64 STEMPEL WAKTU (MILLIS) datetime2
Jenis kompleks DAFTAR varchar(max)
Jenis kompleks MAP varchar(max)

Penting

  • Kumpulan khusus SQL saat ini tidak mendukung jenis data Parquet dengan presisi MICROS dan NANOS.
  • Anda mungkin mengalami kesalahan berikut jika jenis tidak cocok antara Parquet dan SQL atau jika Anda memiliki jenis data Parquet yang tidak didukung: HdfsBridge::recordReaderFillBuffer - Unexpected error encountered filling record reader buffer: ClassCastException:...
  • Memuat nilai di luar rentang 0-127 ke dalam kolom tinyint untuk format file Parquet dan ORC tidak didukung.

Untuk contoh membuat objek eksternal, lihat Membuat tabel eksternal.

Memformat file teks

Jika Anda menggunakan PolyBase, objek eksternal yang ditentukan perlu meratakan baris file teks dengan definisi tabel eksternal dan format file. Data di setiap baris file teks harus diratakan dengan definisi tabel. Untuk memformat file teks:

  • Jika data Anda berasal dari sumber non-relasional, Anda perlu mengubahnya menjadi baris dan kolom. Baik data berasal dari sumber relasional atau non-relasional, data harus diubah untuk menyelaraskan dengan definisi kolom untuk tabel yang Anda rencanakan untuk memuat data.
  • Format data dalam file teks untuk menyelaraskan dengan kolom dan jenis data di tabel tujuan. Ketidakselarasan antara jenis data dalam file teks eksternal dan tabel kumpulan SQL khusus menyebabkan baris ditolak selama pemuatan.
  • Pisahkan bidang dalam file teks dengan terminator. Pastikan untuk menggunakan karakter atau urutan karakter yang tidak ditemukan di data sumber Anda. Gunakan terminator yang Anda tentukan dengan MEMBUAT FORMAT FILE EKSTERNAL.

4. Memuat data menggunakan PolyBase atau pernyataan SALIN

Ini adalah praktik terbaik untuk memuat data ke dalam tabel penahapan. Tabel penahapan memungkinkan Anda menangani kesalahan tanpa mengganggu tabel produksi. Tabel penahapan juga memberi Anda kesempatan untuk menggunakan arsitektur pemrosesan paralel kumpulan SQL khusus untuk transformasi data sebelum memasukkan data ke dalam tabel produksi.

Opsi untuk pemuatan

Untuk memuat data, Anda dapat menggunakan salah satu opsi pemuatan ini:

  • Pernyataan SALIN adalah utilitas pemuatan yang direkomendasikan karena memungkinkan Anda memuat data dengan lancar dan fleksibel. Pernyataan tersebut memiliki banyak kemampuan pemuatan tambahan yang tidak menyediakan PolyBase. Lihat tutorial NY taxi cab COPY untuk melalui contoh tutorial.
  • PolyBase dengan T-SQL mengharuskan Anda menentukan objek data eksternal.
  • Pernyataan PolyBase dan SALIN dengan Azure Data Factory (ADF) adalah alat orkestrasi lain. Alat ini mendefinisikan alur dan menjadwalkan pekerjaan.
  • PolyBase dengan SSIS berfungsi dengan baik ketika data sumber Anda berada di Microsoft SQL Server. SSIS mendefinisikan pemetaan tabel sumber ke tujuan, dan juga mengatur beban. Jika sudah memiliki paket SSIS, Anda dapat memodifikasi paket untuk bekerja dengan tujuan gudang data baru.
  • PolyBase dengan Azure Databricks mentransfer data dari tabel ke bingkai data Databricks dan/atau menulis data dari bingkai data Databricks ke tabel menggunakan PolyBase.

Opsi pemuatan lainnya

Selain PolyBase dan pernyataan SALIN, Anda dapat menggunakan bcp atau SqlBulkCopy API. bcp dimuat langsung ke database tanpa melalui penyimpanan Microsoft Azure Blob dan hanya ditujukan untuk beban kecil.

Catatan

Performa pemuatan opsi ini lebih lambat daripada PolyBase dan pernyataan SALIN.

5. Mengubah data

Saat data berada dalam tabel penahapan, lakukan transformasi yang diperlukan beban kerja Anda. Kemudian pindahkan data ke dalam tabel produksi.

6. Sisipkan data ke dalam tabel produksi

Pernyataan SISIPAN KE ... PILIH memindahkan data dari tabel penahapan ke tabel permanen.

Saat Anda merancang proses ETL, coba jalankan proses pada sampel pengujian kecil. Coba ekstraksi 1000 baris dari tabel ke file, pindahkan baris tersebut ke Microsoft Azure, lalu coba muat ke dalam tabel penahapan.

Solusi pemuatan mitra

Banyak mitra kami memiliki solusi pemuatan. Untuk mengetahui lebih lanjut, lihat daftar mitra solusi kami.

Langkah berikutnya

Untuk panduan pemuatan, lihat Praktik terbaik pemuatan data.