Muat data dari Azure Data Lake Storage ke kumpulan SQL khusus di Azure Synapse Analytics

Panduan ini menguraikan cara menggunakan pernyataan COPY untuk memuat data dari Azure Data Lake Storage. Untuk contoh ringkas tentang menggunakan pernyataan COPY di semua metode autentikasi, kunjungi dokumentasi berikut: Memuat data dengan aman menggunakan kumpulan SQL khusus.

Catatan

Untuk memberikan umpan balik atau melaporkan masalah tentang pernyataan COPY, kirim email ke daftar distribusi berikut: sqldwcopypreview@service.microsoft.com.

  • Buat tabel target untuk memuat data dari Azure Data Lake Storage.
  • Buat pernyataan COPY untuk memuat data ke dalam gudang data.

Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum memulai.

Sebelum Anda mulai

Sebelum Anda memulai tutorial ini, unduh dan instal versi terbaru dari SQL Server Management Studio (SSMS).

Untuk menjalankan tutorial ini, Anda perlu:

  • Kumpulan SQL khusus. Lihat Membuat kumpulan SQL khusus dan data kueri.
  • Akun Data Lake Storage. Lihat Mulai menggunakan Azure Data Lake Storage. Untuk akun penyimpanan ini, Anda harus mengonfigurasi atau menentukan salah satu info masuk berikut untuk dimuat: Kunci akun penyimpanan, kunci tanda tangan akses bersama (SAS), pengguna Aplikasi Direktori Azure, atau pengguna Azure AD yang memiliki peran Azure yang sesuai ke akun penyimpanan.
  • Saat ini, menyerap data menggunakan perintah COPY ke akun Azure Storage yang menggunakan fitur partisi DNS Penyimpanan Azure baru akan menghasilkan kesalahan. Provisikan akun penyimpanan dalam langganan yang tidak menggunakan partisi DNS untuk tutorial ini.

Membuat tabel target

Hubungkan ke kumpulan SQL khusus Anda dan buat tabel target yang akan Anda muat. Dalam contoh ini, kita membuat tabel dimensi produk.

-- A: Create the target table
-- DimProduct
CREATE TABLE [dbo].[DimProduct]
(
    [ProductKey] [int] NOT NULL,
    [ProductLabel] [nvarchar](255) NULL,
    [ProductName] [nvarchar](500) NULL
)
WITH
(
    DISTRIBUTION = HASH([ProductKey]),
    CLUSTERED COLUMNSTORE INDEX
    --HEAP
);

Membuat pernyataan COPY

Hubungkan ke kumpulan khusus SQL Anda dan jalankan pernyataan COPY. Untuk daftar lengkap contoh, kunjungi dokumentasi berikut: Memuat data dengan aman menggunakan kumpulan SQL khusus.

-- B: Create and execute the COPY statement

COPY INTO [dbo].[DimProduct]  
--The column list allows you map, omit, or reorder input file columns to target table columns.  
--You can also specify the default value when there is a NULL value in the file.
--When the column list is not specified, columns will be mapped based on source and target ordinality
(
    ProductKey default -1 1,
    ProductLabel default 'myStringDefaultWhenNull' 2,
    ProductName default 'myStringDefaultWhenNull' 3
)
--The storage account location where you data is staged
FROM 'https://storageaccount.blob.core.windows.net/container/directory/'
WITH  
(
   --CREDENTIAL: Specifies the authentication method and credential access your storage account
   CREDENTIAL = (IDENTITY = '', SECRET = ''),
   --FILE_TYPE: Specifies the file type in your storage account location
   FILE_TYPE = 'CSV',
   --FIELD_TERMINATOR: Marks the end of each field (column) in a delimited text (CSV) file
   FIELDTERMINATOR = '|',
   --ROWTERMINATOR: Marks the end of a record in the file
   ROWTERMINATOR = '0x0A',
   --FIELDQUOTE: Specifies the delimiter for data of type string in a delimited text (CSV) file
   FIELDQUOTE = '',
   ENCODING = 'UTF8',
   DATEFORMAT = 'ymd',
   --MAXERRORS: Maximum number of reject rows allowed in the load before the COPY operation is canceled
   MAXERRORS = 10,
   --ERRORFILE: Specifies the directory where the rejected rows and the corresponding error reason should be written
   ERRORFILE = '/errorsfolder',
) OPTION (LABEL = 'COPY: ADLS tutorial');

Mengoptimalkan kompresi columnstore

Secara default, tabel ditentukan sebagai indeks columnstore terkluster. Setelah selesai dimuat, beberapa baris data mungkin tidak dikompresi ke dalam columnstore. Ada berbagai alasan mengapa hal bisa terjadi. Untuk mempelajari selengkapnya, lihat Mengelola indeks columnstore.

Untuk mengoptimalkan performa kueri dan kompresi columnstore setelah dimuat, bangun ulang tabel untuk memaksa indeks columnstore mengompresi semua baris.


ALTER INDEX ALL ON [dbo].[DimProduct] REBUILD;

Mengoptimalkan statistik

Sebaiknya segera buat statistik kolom tunggal setelah dimuat. Ada beberapa pilihan untuk statistik. Misalnya, jika Anda membuat statistik kolom tunggal di setiap kolom, mungkin perlu waktu lama untuk membangun kembali semua statistik. Jika Anda mengetahui kolom tertentu tidak akan berada dalam predikat kueri, Anda dapat melewati pembuatan statistik pada kolom tersebut.

Jika Anda memutuskan untuk membuat statistik kolom tunggal di setiap kolom dari setiap tabel, Anda dapat menggunakan sampel kode prosedur tersimpan prc_sqldw_create_stats dalam artikel statistik.

Contoh berikut adalah titik awal yang baik untuk membuat statistik. Ini membuat statistik kolom tunggal di setiap kolom dalam tabel dimensi, dan di setiap kolom gabungan dalam tabel fakta. Anda dapat selalu menambahkan statistik kolom tunggal atau multikolom ke kolom tabel fakta lainnya di kemudian hari.

Prestasi terbuka!

Anda berhasil memuat data ke dalam gudang data Anda. Kerja bagus!

Langkah berikutnya

Memuat data adalah langkah pertama untuk mengembangkan solusi gudang data menggunakan Azure Synapse Analytics. Lihat sumber daya pengembangan kami.

Untuk contoh dan referensi pemuatan lainnya, lihat dokumentasi berikut ini: