Bagikan melalui


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 istimewa CREATE 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.

  1. Masuk ke portal Azure.
  2. Di navigasi kiri, klik ID Microsoft Entra.
  3. Klik Pendaftaran aplikasi.
  4. Klik Pendaftaran baru. Masukkan nama untuk aplikasi baru dan set URI pengalihan ke https://<workspace-url>/login/oauth/azure.html.
  5. Klik Daftar.
  6. Dalam kotak Esensial , salin dan simpan ID Aplikasi (klien). Anda akan menggunakan nilai ini untuk mengonfigurasi aplikasi.
  7. Klik Sertifikat & rahasia.
  8. Pada tab Rahasia klien, klik Rahasia klien baru.
  9. Masukkan deskripsi untuk rahasia dan kedaluwarsa (pengaturan defaultnya adalah 180 hari).
  10. Klik Tambahkan.
  11. Salin nilai yang dihasilkan untuk rahasia klien.
  12. Klik Izin API.
  13. Klik Tambahkan izin.
  14. Select Azure SQL Database dan klik user_impersonation di bawah Izin Delegasi.
  15. 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

  1. Di ruang kerja Azure Databricks Anda, klik ikon CatalogCatalog.

  2. Di bagian atas panel Catalog, klik ikon Tambahkan atau plus, 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.

  3. Pada halaman dasar-dasar Koneksi wizard koneksi up, masukkan nama Koneksi yang mudah digunakan.

  4. jenis Koneksi SQL Server.

  5. Select jenis autentikasi OAuth atau nama pengguna dan kata sandi (autentikasi dasar).

  6. (Opsional) Tambahkan komentar.

  7. Klik Berikutnya.

  8. 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 ke true, 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.
  9. Klik Buat koneksi.

  10. (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.
  11. Klik Berikutnya.

  12. 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.

  13. (Opsional) Klik Uji koneksi untuk mengonfirmasi bahwa koneksi berfungsi.

  14. Klik Buat catalog.

  15. 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.

  16. 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.

  17. Grant Hak Istimewa pada catalog. Klik Grant:

    1. Tentukan Prinsipal yang akan memiliki akses ke objek di catalog. Mulai ketik prinsipal dalam kotak teks, lalu klik prinsipal dalam hasil yang dikembalikan.
    2. 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 grantread pada objek di catalog.
      • Select Editor Data dari menu drop-down ke hak istimewa grantread dan modify pada objek di catalog.
      • Secara manual select hak istimewa kepada grant.
    3. Klik Grant.
  18. Klik Berikutnya.

  19. Pada halaman Metadata , tentukan pasangan kunci-nilai tag. Untuk informasi selengkapnya, lihat Menerapkan tag ke Unity Catalog objek yang dapat diamankan.

  20. (Opsional) Tambahkan komentar.

  21. 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

  1. Di ruang kerja Azure Databricks Anda, klik ikon CatalogCatalog untuk membuka Catalog Explorer.

  2. Di bagian atas panel Catalog, klik ikon Tambahkan atau plusikon Tambahkan dan selectTambahkan catalog dari menu.

    Atau, dari halaman akses cepat , klik tombol , lalu klik tombol Buat .

  3. 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.