Menjalankan kueri federasi di Microsoft SQL Server
Artikel ini menjelaskan cara mengatur set Federasi Lakehouse untuk menjalankan kueri gabungan pada data SQL Server yang tidak dikelola oleh Azure Databricks. Untuk mempelajari selengkapnya tentang Federasi Lakehouse, lihat Apa itu Federasi Lakehouse?.
Untuk menyambungkan ke database SQL Server Anda menggunakan Federasi Lakehouse, Anda harus membuat hal berikut di Metastore Catalog Azure Databricks Unity Anda:
- Koneksi ke database SQL Server Anda.
- catalog asing yang mencerminkan database SQL Server Anda di Unity Catalog sehingga Anda dapat menggunakan sintaks kueri Unity Catalog dan alat tata kelola data untuk mengelola akses pengguna Azure Databricks ke database.
Federasi Lakehouse mendukung SQL Server, Azure SQL Database, dan Azure SQL Managed Instance.
Sebelum Anda mulai
Persyaratan ruang kerja:
- Ruang kerja telah diaktifkan untuk Unity Catalog.
Persyaratan komputasi:
- Konektivitas jaringan dari sumber daya komputasi Anda ke sistem database target. Lihat Rekomendasi jaringan untuk Federasi Lakehouse.
- Komputasi Azure Databricks harus menggunakan Databricks Runtime 13.3 LTS atau versi lebih tinggi dan Akses Bersama atau Mode akses pengguna tunggal.
- Gudang SQL harus pro atau tanpa server dan harus menggunakan 2023.40 atau lebih tinggi.
Izin yang diperlukan:
- Untuk membuat koneksi, Anda harus menjadi admin metastore atau pengguna dengan hak istimewa
CREATE CONNECTION
pada metastore Unity Catalog yang dilampirkan ke ruang kerja. - Untuk membuat catalogyang asing, Anda harus memiliki izin
CREATE CATALOG
pada metastore dan menjadi pemilik dari koneksi tersebut atau memiliki hak istimewaCREATE FOREIGN CATALOG
pada koneksi.
Persyaratan izin tambahan ditentukan di setiap bagian berbasis tugas yang mengikuti.
- Jika Anda berencana untuk mengautentikasi menggunakan OAuth, daftarkan aplikasi di ID Microsoft Entra untuk Azure Databricks. Lihat bagian berikut untuk detailnya.
(Opsional) Mendaftarkan aplikasi di ID Microsoft Entra untuk Azure Databricks
Jika Anda ingin mengautentikasi menggunakan OAuth, ikuti langkah ini sebelum Anda membuat koneksi SQL Server. Untuk mengautentikasi menggunakan nama pengguna dan kata sandi, lewati bagian ini.
- Masuk ke portal Azure.
- Di navigasi kiri, klik ID Microsoft Entra.
- Klik Pendaftaran aplikasi.
- Klik Pendaftaran baru. Masukkan nama untuk aplikasi baru dan set URI pengalihan ke
https://<workspace-url>/login/oauth/azure.html
. - Klik Daftar.
- Dalam kotak Esensial , salin dan simpan ID Aplikasi (klien). Anda akan menggunakan nilai ini untuk mengonfigurasi aplikasi.
- Klik Sertifikat & rahasia.
- Pada tab Rahasia klien, klik Rahasia klien baru.
- Masukkan deskripsi untuk rahasia dan kedaluwarsa (pengaturan defaultnya adalah 180 hari).
- Klik Tambahkan.
- Salin nilai yang dihasilkan untuk rahasia klien.
- Klik Izin API.
- Klik Tambahkan izin.
- Select Azure SQL Database dan klik user_impersonation di bawah Izin Delegasi.
- Klik Tambahkan izin.
Buat sambungan
Koneksi menentukan jalur dan credentials untuk mengakses sistem database eksternal. Untuk membuat koneksi, Anda bisa menggunakan Catalog Explorer atau perintah SQL CREATE CONNECTION
di buku catatan Azure Databricks atau editor kueri Databricks SQL.
Catatan
Anda juga dapat menggunakan Databricks REST API atau Databricks CLI untuk membuat koneksi. Lihat perintah POST /api/2.1/unity-catalog,connections, dan Unity Catalog.
Izin diperlukan: Admin atau pengguna Metastore dengan CREATE CONNECTION
hak istimewa.
Catalog Explorer
Di ruang kerja Azure Databricks Anda, klik ikon
Catalog.
Di bagian atas panel Catalog, klik ikon
, lalu pilih Tambahkan ikon dan selectTambahkan koneksi dari menu.
Atau, dari halaman akses cepat, klik tombol data eksternal, buka tab Connections, dan klik buat koneksi.
Pada halaman dasar-dasar Koneksi
wizard koneksi up, masukkan nama Koneksi yang mudah digunakan .jenis Koneksi SQL Server .Select jenis autentikasi OAuth atau nama pengguna dan kata sandi (autentikasi dasar).
(Opsional) Tambahkan komentar.
Klik Berikutnya.
Pada halaman Autentikasi
, masukkan properti koneksi berikut untuk instans SQL Server Anda. Properti yang khusus untuk metode autentikasi yang Anda pilih didahului oleh Auth type
dalam tanda kurung.- Host: Server SQL Anda.
- (Autentikasi dasar) Pelabuhan
- (Autentikasi dasar) trustServerCertificate: Default ke
false
. Ketika set ketrue
, lapisan transportasi menggunakan SSL untuk mengenkripsi saluran dan melewati rantai sertifikat untuk memvalidasi kepercayaan. Biarkan set ini dalam pengaturan default kecuali Anda memiliki kebutuhan khusus untuk mengabaikan validasi kepercayaan. - (Autentikasi dasar) Pengguna
- (Autentikasi dasar) Kata sandi
- (OAuth) Titik Akhir Otorisasi: Titik akhir otorisasi Azure Entra Anda dalam format
https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/authorize
. - (OAuth) ID klien dari aplikasi yang Anda buat.
- (OAuth) Rahasia klien dari rahasia klien yang Anda buat.
- (OAuth) cakupan OAuth: Masukkan nilai berikut tanpa modifikasi:
https://database.windows.net/.default offline_access
. - (OAuth) Klik Masuk dengan Azure Entra ID. Masukkan nama pengguna dan kata sandi Azure Anda. Setelah Anda dialihkan ke halaman Autentikasi
, kode otorisasi diisi di UI.
Klik Buat koneksi.
(Autentikasi dasar) Pada halaman detail Koneksi
, tentukan yang berikut ini: - Sertifikat Kepercayaan Server: Ini tidak dipilih secara default. Saat dipilih, lapisan transportasi menggunakan SSL untuk mengenkripsi saluran dan melewati rantai sertifikat untuk memvalidasi kepercayaan. Biarkan set ini dalam pengaturan default kecuali Anda memiliki kebutuhan khusus untuk mengabaikan validasi kepercayaan.
- Niat aplikasi: Jenis beban kerja aplikasi saat menyambungkan ke server.
Klik Berikutnya.
Pada halaman Catalog dasar-dasar, masukkan nama untuk catalogasing. catalog asing mencerminkan database dalam sistem data eksternal sehingga Anda dapat mengkueri dan mengelola akses ke data dalam database tersebut menggunakan Azure Databricks dan Unity Catalog.
(Opsional) Klik Uji koneksi untuk mengonfirmasi bahwa koneksi berfungsi.
Klik Buat catalog.
Pada halaman Akses , ruang kerja select di mana pengguna dapat mengakses catalog yang Anda buat. Anda dapat selectsemua ruang kerja memiliki akses, atau klik Tetapkan ke ruang kerja, select ruang kerja tersebut, lalu klik Tetapkan.
Ubah Pemilik yang akan dapat mengelola akses ke semua objek di catalog. Mulai ketik prinsipal dalam kotak teks, lalu klik prinsipal dalam hasil yang dikembalikan.
Grant Hak Istimewa pada catalog. Klik Grant:
- Tentukan Prinsipal yang akan memiliki akses ke objek di catalog. Mulai ketik prinsipal dalam kotak teks, lalu klik prinsipal dalam hasil yang dikembalikan.
-
Select preset Hak Istimewa ke grant ke setiap prinsipal. Semua pengguna akun diberikan
BROWSE
secara default.-
Select
Pembaca Data dari menu drop-down ke hak istimewa grant
read
pada objek di catalog. -
Select
Editor Data dari menu drop-down ke hak istimewa grant
read
danmodify
pada objek di catalog. - Secara manual select hak istimewa kepada grant.
-
Select
Pembaca Data dari menu drop-down ke hak istimewa grant
- Klik Grant.
Klik Berikutnya.
Pada halaman Metadata
, tentukan pasangan kunci-nilai tag. Untuk informasi selengkapnya, lihat Menerapkan tag ke Unity Catalog objek yang dapat diamankan. (Opsional) Tambahkan komentar.
Klik Simpan.
Catatan
(OAuth) Titik akhir OAuth ID Azure Entra harus dapat diakses dari IP sarana kontrol Azure Databricks. Lihat Wilayah Azure Databricks.
SQL
Jalankan perintah berikut ini di buku catatan atau editor kueri Databricks SQL.
CREATE CONNECTION <connection-name> TYPE sqlserver
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>'
);
Kami menyarankan agar Anda menggunakan azure Databricks rahasia alih-alih string teks biasa untuk values sensitif seperti credentials. Contohnya:
CREATE CONNECTION <connection-name> TYPE sqlserver
OPTIONS (
host '<hostname>',
port '<port>',
user secret ('<secret-scope>','<secret-key-user>'),
password secret ('<secret-scope>','<secret-key-password>')
)
Untuk informasi tentang menyiapkan rahasia, lihat Manajemen rahasia.
Membuat catalog asing
Catatan
Jika Anda menggunakan UI untuk membuat koneksi ke sumber data, pembuatan catalog eksternal disertakan dan Anda dapat melewati langkah ini.
catalog asing mencerminkan database dalam sistem data eksternal sehingga Anda dapat mengkueri dan mengelola akses ke data dalam database tersebut menggunakan Azure Databricks dan Unity Catalog. Untuk membuat catalogasing, Anda menggunakan koneksi ke sumber data yang telah ditentukan sebelumnya.
Untuk membuat entitas catalogasing, Anda dapat menggunakan Catalog Explorer atau perintah SQL CREATE FOREIGN CATALOG
di buku catatan Azure Databricks atau editor kueri SQL.
Anda juga dapat menggunakan Databricks REST API atau Databricks CLI untuk membuat catalog. Lihat perintah POST /api/2.1/unity-catalog,catalogs, dan Unity Catalog.
Izin diperlukan:CREATE CATALOG
izin pada metastore dan kepemilikan koneksi atau CREATE FOREIGN CATALOG
hak istimewa pada koneksi.
Catalog Explorer
Di ruang kerja Azure Databricks Anda, klik ikon
Catalog untuk membuka Catalog Explorer.
Di bagian atas panel Catalog, klik ikon
ikon Tambahkan dan selectTambahkan catalog dari menu.
Atau, dari halaman akses cepat
, klik tombol , lalu klik tombol Buat .Ikuti instruksi untuk membuat catalogs asing di Buat catalogs.
SQL
Jalankan perintah SQL berikut ini di buku catatan atau editor kueri SQL. Item dalam tanda kurung bersifat opsional. Ganti placeholder values:
-
<catalog-name>
: Nama untuk catalog di Azure Databricks. -
<connection-name>
: Objek koneksi yang menentukan sumber data, jalur, dan akses credentials. -
<database-name>
: Nama database yang ingin Anda cerminkan sebagai catalog di Azure Databricks.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');
Pushdown yang didukung
Pushdown berikut didukung pada semua komputasi:
- Filter
- Proyeksi
- Limit
- Fungsi: parsial, hanya untuk ekspresi filter. (Fungsi string, fungsi Matematika, Fungsi Data, Waktu dan Tanda Waktu, dan fungsi lain-lain, seperti Alias, Cast, SortOrder)
Pushdown berikut didukung pada Databricks Runtime 13.3 LTS ke atas, dan pada komputasi gudang SQL:
- Agregat
- Operator Boolean berikut: =, <, <=, >, >=, <=>
- Fungsi matematika berikut (tidak didukung jika ANSI dinonaktifkan): +, -, *, %, /
- Operator lain-lain berikut: ^, |, ~
- Mengurutkan, saat digunakan dengan limit
Pushdown berikut ini tidak didukung:
- Gabungan
- Fungsi Windows
Pemetaan jenis data
Saat Anda membaca dari SQL Server ke Spark, jenis data memetakan sebagai berikut:
Jenis SQL Server | Jenis Spark |
---|---|
bigint (unsigned), desimal, uang, numerik, smallmoney | DecimalType |
kecil, kecil | ShortType |
int | IntegerType |
bigint (jika ditandatangani) | LongType |
real | FloatType |
float | DoubleType |
char, nchar, uniqueidentifier | CharType |
nvarchar, varchar | VarcharType |
teks, xml | StringType |
biner, geografi, geometri, gambar, tanda waktu, udt, varbinary | BinaryType |
bit | BooleanType |
date | DateType |
datetime, datetime, smalldatetime, time | TimestampType/TimestampNTZType |
*Saat Anda membaca dari SQL Server, SQL Server datetimes
dipetakan ke Spark TimestampType
jika preferTimestampNTZ = false
(default). SQL Server datetimes
dipetakan ke TimestampNTZType
jika preferTimestampNTZ = true
.