Bagikan melalui


Tutorial: Memuat data eksternal menggunakan identitas terkelola

Artikel ini menjelaskan cara membuat tabel eksternal atau menyerap data dari akun Azure Data Lake Storage (ADLS) Gen2 menggunakan identitas terkelola.

Prasyarat

Sumber daya berikut diperlukan untuk menyelesaikan tutorial ini:

  • An Azure Data Lake Storage (ADLS) Gen2 account
  • Ruang kerja Azure Synapse Analytics dan kumpulan SQL khusus

Memberikan akses identitas ruang kerja ke akun penyimpanan

Setiap ruang kerja Azure Synapse Analytics secara otomatis membuat identitas terkelola yang membantu Anda mengonfigurasi akses aman ke data eksternal dari ruang kerja Anda. Untuk mempelajari selengkapnya tentang identitas terkelola untuk Azure Synapse Analytics, kunjungi Identitas layanan terkelola untuk Azure Synapse Analytics.

Untuk mengaktifkan identitas terkelola Anda untuk mengakses data di akun ADLS Gen2, Anda perlu memberikan akses identitas Anda ke akun sumber. Untuk memberikan izin yang tepat, ikuti langkah-langkah berikut:

  1. Di portal Azure, temukan akun penyimpanan Anda.
  2. Pilih Penyimpanan data -> Kontainer, dan navigasikan ke folder tempat data sumber yang perlu diakses tabel eksternal.
  3. Pilih Kontrol Akses (IAM).
  4. Select Add -> Add role assignment.
  5. In the list of job function roles, select Storage Blob Data Contributor and select Next.
  6. Di halaman Tambahkan penetapan peran, pilih + Pilih anggota. Panel Pilih anggota terbuka.
  7. Ketik nama identitas ruang kerja Anda. Identitas ruang kerja sama dengan nama ruang kerja Anda. Saat ditampilkan, pilih identitas ruang kerja Anda, lalu Pilih.
  8. Di halaman Tambahkan penetapan peran, pastikan daftar Anggota menyertakan akun ID Microsoft Entra yang Anda inginkan. Setelah diverifikasi, pilih Tinjau + tetapkan.
  9. Di halaman konfirmasi, tinjau perubahan dan pilih Tinjau + tetapkan.

Your workspace identity is now a member of the Storage Blob Data Contributor role and has access to the source folder.

Catatan

Langkah-langkah ini juga berlaku untuk mengamankan akun ADLS Gen2 yang dikonfigurasi untuk membatasi akses publik. If your storage account is associated with a secured ADLS Gen2 account or associated with a VNet, the external table or COPY INTO command must use a managed identity. Untuk mempelajari selengkapnya tentang mengamankan akun ADLS Gen2 Anda, lihat Mengonfigurasi firewall Azure Storage dan jaringan virtual.

Ingest data using COPY INTO

Pernyataan T-SQL COPY INTO menyediakan penyerapan data throughput tinggi yang fleksibel ke dalam tabel Anda, dan merupakan strategi utama untuk menyerap data ke dalam tabel kumpulan SQL khusus Anda. COPY INTO memungkinkan pengguna untuk menyerap data dari lokasi eksternal tanpa harus membuat salah satu objek database tambahan yang diperlukan untuk tabel eksternal.

Untuk menjalankan COPY INTO pernyataan menggunakan identitas terkelola ruang kerja untuk autentikasi, gunakan perintah T-SQL berikut:

COPY INTO <TableName>
FROM 'https://<AccountName>.dfs.core.windows.net/<Container>/<Folder>/ '
WITH
(
    CREDENTIAL = (IDENTITY = 'Managed Identity'),
    [<CopyIntoOptions>]
);

Tempat:

  • <TableName> adalah nama tabel untuk menyerap data ke dalam
  • <AccountName> adalah nama akun ADLS Gen2 Anda
  • <Container> adalah nama kontainer dalam akun penyimpanan Anda tempat data sumber disimpan
  • <Folder> adalah folder (atau jalur dengan subfolder) tempat data sumber disimpan dalam kontainer Anda. Anda juga dapat memberikan nama file jika menunjuk langsung ke satu file.
  • <CopyIntoOptions> adalah daftar opsi lain yang ingin Anda berikan ke pernyataan COPY INTO.

Untuk mempelajari selengkapnya dan menjelajahi sintaks lengkap COPY INTO, lihat COPY INTO (Transact-SQL).

Mengkueri data di ADLS Gen2 menggunakan tabel eksternal

Tabel eksternal memungkinkan pengguna untuk mengkueri data dari akun Azure Data Lake Storage (ADLS) Gen2 tanpa perlu menyerap data terlebih dahulu. Pengguna dapat membuat tabel eksternal yang menunjuk ke file pada kontainer ADLS Gen2, dan mengkuerinya seperti tabel pengguna biasa.

Langkah-langkah berikut menjelaskan proses untuk membuat tabel eksternal baru yang menunjuk ke data di ADLS Gen2, menggunakan identitas terkelola untuk autentikasi.

Membuat objek database yang diperlukan

Tabel eksternal mengharuskan objek berikut dibuat:

  1. A database master key that encrypts the database scoped credential's secret
  2. A database scoped credential that uses your workspace identity
  3. Sumber data eksternal yang menunjuk ke folder sumber
  4. Format file eksternal yang menentukan format file sumber
  5. Definisi tabel eksternal yang digunakan untuk kueri

Untuk mengikuti langkah-langkah ini, gunakan editor SQL di Ruang Kerja Azure Synapse, atau klien SQL pilihan Anda yang terhubung ke Kumpulan SQL khusus Anda. Mari kita lihat langkah-langkah ini secara rinci.

Create the database master key

Kunci master database adalah kunci simetris yang digunakan untuk melindungi kunci pribadi sertifikat dan kunci asimetris yang terdapat dalam database serta rahasia pada kredensial yang berlingkup database. Jika sudah ada kunci master dalam database, Anda tidak perlu membuat yang baru. Ganti <Secure Password> dengan kata sandi yang aman. Kata sandi ini digunakan untuk mengenkripsi kunci master dalam database.

Untuk membuat kunci master, gunakan perintah T-SQL berikut:

-- Replace <Secure Password> with a secure password
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Secure Password>';

Untuk mempelajari selengkapnya tentang kunci master database, lihat MEMBUAT MASTER KEY (Transact-SQL).

Create the database scoped credential

Kredensial lingkup database menggunakan identitas ruang kerja Anda dan diperlukan untuk mengakses ke lokasi eksternal kapan saja tabel eksternal memerlukan akses ke data sumber.

Untuk membuat kredensial lingkup database, gunakan perintah berikut. Ganti <CredentialName> dengan nama yang ingin Anda gunakan untuk kredensial cakupan database Anda.

CREATE DATABASE SCOPED CREDENTIAL <CredentialName> WITH IDENTITY = 'Managed Service Identity';

Untuk mempelajari selengkapnya tentang kredensial lingkup database, lihat MEMBUAT KREDENSIAL CAKUPAN DATABASE (Transact-SQL).

Buat sumber data eksternal

Langkah selanjutnya adalah membuat sumber data eksternal yang menentukan tempat data sumber yang digunakan oleh tabel eksternal berada.

Untuk membuat sumber data eksternal, gunakan perintah T-SQL berikut:

CREATE EXTERNAL DATA SOURCE <ExternalDataSourceName>
WITH (
    TYPE = HADOOP,
    LOCATION = 'abfss://<Container>@<AccountName>.dfs.core.windows.net/<Folder>/',
    CREDENTIAL = <CredentialName>
);

Tempat:

  • <ExternalDataSourceName> adalah nama yang ingin Anda gunakan untuk sumber data eksternal Anda.
  • <AccountName> adalah nama akun ADLS Gen2 Anda.
  • <Container> adalah nama kontainer dalam akun penyimpanan Anda tempat data sumber disimpan.
  • <Folder> adalah folder (atau jalur dengan subfolder) tempat data sumber disimpan dalam kontainer Anda. Anda juga dapat memberikan nama file jika menunjuk langsung ke satu file.
  • <Credential> adalah nama kredensial cakupan database yang Anda buat sebelumnya.

Untuk mempelajari selengkapnya tentang sumber data eksternal, lihat MEMBUAT SUMBER DATA EKSTERNAL (Transact-SQL).

Create the external file format

Langkah selanjutnya adalah membuat format file eksternal. Ini menentukan tata letak aktual data yang dirujuk oleh tabel eksternal.

Untuk membuat format file eksternal, gunakan perintah T-SQL berikut. Ganti <FileFormatName> dengan nama yang ingin Anda gunakan untuk format file eksternal Anda.

CREATE EXTERNAL FILE FORMAT <FileFormatName>
WITH (
    FORMAT_TYPE = DELIMITEDTEXT,
    FORMAT_OPTIONS (
        FIELD_TERMINATOR = ',',
        STRING_DELIMITER = '"',
        FIRST_ROW = 2,
        USE_TYPE_DEFAULT = True
    )
);

Dalam contoh ini, sesuaikan parameter seperti FIELD_TERMINATOR, , STRING_DELIMITERFIRST_ROW, dan lainnya sesuai dengan data sumber Anda. Untuk opsi pemformatan lainnya dan untuk mempelajari selengkapnya tentang EXTERNAL FILE FORMAT, lihat CREATE EXTERNAL FILE FORMAT.

Membuat tabel eksternal

Sekarang setelah semua objek yang diperlukan yang menyimpan metadata untuk mengakses data eksternal dengan aman dibuat, saatnya untuk membuat tabel eksternal. Untuk membuat tabel eksternal, gunakan perintah T-SQL berikut:

-- Adjust the table name and columns to your desired name and external table schema
CREATE EXTERNAL TABLE <ExternalTableName> (
    Col1 INT,
    Col2 NVARCHAR(100),
    Col4 INT
)
WITH
(
    LOCATION = '<Path>',
    DATA_SOURCE = <ExternalDataSourceName>,
    FILE_FORMAT = <FileFormatName>
);

Tempat:

Pastikan untuk menyesuaikan nama dan skema tabel dengan nama yang diinginkan dan skema data dalam file sumber Anda.

Mengkueri tabel eksternal

Pada titik ini, semua metadata yang diperlukan untuk mengakses tabel eksternal dibuat. Untuk menguji tabel eksternal Anda, gunakan kueri seperti sampel T-SQL berikut untuk memvalidasi pekerjaan Anda:

SELECT TOP 10 Col1, Col2 FROM <ExternalTableName>;

Jika semuanya dikonfigurasi dengan benar, Anda akan melihat data dari data sumber Anda sebagai hasil dari kueri ini.

Untuk mempelajari selengkapnya dan menjelajahi sintaks CREATE EXTERNAL TABLElengkap , lihat CREATE EXTERNAL TABLE (Transact-SQL).