Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:✅ Titik akhir analitik SQL di Microsoft Fabric
Dalam tutorial ini, Anda mempelajari cara membangun alur Microsoft Fabric untuk melakukan pemeliharaan tabel cerdas.
Solusi ini memanggil sys.sp_get_table_health_metrics prosedur tersimpan T-SQL pada endpoint analitik SQL Lakehouse, mengevaluasi hasilnya, dan hanya menjalankan OPTIMIZE jika tabel benar-benar memerlukan pemeliharaan. Pola "periksa-lalu-tindak" ini mencegah biaya komputasi yang tidak perlu pada tabel yang sehat, sekaligus memastikan tabel yang mengalami degradasi dipelihara secara otomatis.
Mengapa pemeliharaan diperlukan
Tabel Lakehouse dapat menumpuk terlalu banyak file Parquet berukuran kecil dari waktu ke waktu, yang menurunkan kinerja kueri pada endpoint analitik SQL.
Daripada berjalan OPTIMIZE pada jadwal tetap terlepas dari status tabel, alur ini membuat keputusan berdasarkan informasi: alur ini memeriksa kesehatan tabel terlebih dahulu, dan hanya memicu pengoptimalan ketika anomali terdeteksi.
Prasyarat
Sebelum mulai, pastikan bahwa Anda memiliki:
- Ruang kerja Microsoft Fabric dengan izin kontributor atau yang lebih tinggi.
- Lakehouse di ruang kerja yang berisi setidaknya satu tabel Delta yang ingin Anda pantau. Tutorial ini menggunakan Lakehouse bernama
SalesDataLakehouse. - Pemahaman tentang alur data Fabric.
- Keakraban dengan buku catatan Fabric.
Struktur solusi
Alur yang telah selesai memiliki struktur ini:
-
Aktivitas skrip: Dijalankan
sp_get_table_health_metricsterhadap tabel target dan mengembalikan metrik kesehatan tabel sebagai output terstruktur. -
Aktivitas If Condition: Membaca
PotentialAnomalyTypelangsung dari keluaran Skrip dan memeriksa apakah nilainya lebih besar dari nol. Untuk informasi selengkapnya tentangPotentialAnomalyType, lihat Kode jenis anomali potensial. -
Aktivitas notebook (di dalam cabang True): Menjalankan
OPTIMIZEpada tabel dari notebook Spark.
Di akhir tutorial ini, Anda akan memiliki notebook yang mengambil parameter dari alur dan mengoptimalkan tabel saat dipicu.
Langkah 1: Membuat buku catatan pengoptimalan
Notebook menerima target Lakehouse, skema, dan nama tabel sebagai parameter dari alur, lalu menjalankan OPTIMIZE menggunakan Spark SQL.
- Di ruang kerja Fabric Anda, pilih + Item baru>Notebook.
- Beri nama buku catatan Optimize-Table.
- Di bawah Lokasi, pilih Lakehouse tempat tabel yang Anda periksa disimpan. Latihan ini menggunakan Lakehouse bernama
SalesDataLakehouse. - Pilih Buat.
Tambahkan sel parameter
Sel pertama menentukan variabel yang diambil alih alur saat runtime.
Di sel pertama, masukkan parameter berikut. Nilai tidak penting, dan alur mengambil alihnya saat runtime.
# Parameters lakehouse_name = "<LakehouseName>" schema_name = "<SchemaName>" table_name = "<TableName>"Penting
Bagaimana parameterisasi bekerja di notebook Fabric: Saat dijalankan, Fabric menyisipkan sel baru segera setelah sel parameter, yang menetapkan ulang variabel-variabel ini dengan nilai yang diteruskan oleh pipeline. Nilai yang Anda tetapkan di sini hanya menginisialisasi variabel dan meningkatkan keterbacaan.
Pilih menu sel (...) >Alihkan sel parameter untuk menandai sel ini sebagai sel parameter.
Tambahkan sel OPTIMIZE
Perintah OPTIMIZE adalah perintah Spark SQL, bukan perintah T-SQL. Anda harus menjalankannya di lingkungan Spark seperti notebook, definisi kerja Spark, atau antarmuka Pemeliharaan Lakehouse. Titik akhir analitik SQL dan editor kueri Warehouse SQL tidak mendukung perintah ini secara langsung.
Di sel kedua, masukkan:
full_name = f"{lakehouse_name}.{schema_name}.{table_name}" print(f"Optimizing {full_name} ...") result = spark.sql(f"OPTIMIZE {full_name}") result.show(truncate=False)Tambahkan sel Markdown sesuai kebutuhan untuk mendokumen buku catatan dengan benar untuk pengguna lain. Buku catatan akhir Anda akan terlihat seperti berikut ini:
Note
Contoh ini mengasumsikan Lakehouse dengan skema yang diaktifkan. Sesuaikan nama tiga bagian pada full_name jika Anda tidak menggunakan skema Lakehouse.
Langkah 2: Membuat alur
Di ruang kerja Fabric Anda, pilih + Item baru>Pipeline.
Beri nama alur Check-and-Optimize-Table.
Pilih latar belakang kanvas alur, lalu buka tab Parameter . Tambahkan tiga parameter:
Name Type Nilai standar lakehouse_nameString SalesDataLakehouseschema_nameString dbotable_nameString FactSales
Langkah 3: Tambahkan aktivitas Skrip
Aktivitas Skrip menjalankan sys.sp_get_table_health_metrics di endpoint analitik SQL dan menangkap hasilnya.
Penting
Gunakan aktivitas Skrip , bukan aktivitas Prosedur tersimpan . Hanya aktivitas Skrip yang mengekspos hasil yang ditetapkan sebagai output JSON terstruktur yang dapat diurai aktivitas hilir.
- Dari tab Aktivitas , pilih Skrip untuk menambahkannya ke kanvas.
- Beri nama Periksa Kesehatan Tabel.
- Di tab Pengaturan :
Koneksi: Pilih titik akhir analitik SQL untuk Lakehouse Anda. Jika tidak tercantum, pilih Telusuri semua di bagian bawah daftar dropdown, lalu temukan titik akhir analitik SQL Lakehouse Anda.
Jenis skrip: Pilih Kueri.
Skrip: Pilih Tambahkan konten dinamis dan masukkan ekspresi berikut:
@concat('EXEC sys.sp_get_table_health_metrics ''', pipeline().parameters.schema_name, '.', pipeline().parameters.table_name, '''')
Ekspresi ini menghasilkan perintah SQL yang menjalankan prosedur tersimpan terhadap tabel target Anda, misalnya: EXEC sys.sp_get_table_health_metrics 'dbo.FactSales'.
Memverifikasi output skrip
Jalankan pipeline sekali dan periksa keluaran aktivitas Skrip. Anda melihat objek JSON yang mirip dengan:
{
"resultSetCount": 1,
"resultSets": [
{
"rowCount": 1,
"rows": [
{
"PotentialAnomalyType": 3,
"PotentialAnomalyDescription": "Too many small files...",
"FileCount": 2688,
"...": "..."
}
]
}
]
}
Penting
Hasil aktual Anda mungkin bervariasi berdasarkan status tabel Anda. Kuncinya adalah mengembalikan kolom yang diekspos oleh sys.sp_get_table_health_metrics.
Langkah 4: Tambahkan aktivitas If Condition
Aktivitas If Condition membaca PotentialAnomalyType langsung dari output aktivitas Skrip dan mengambil keputusan berdasarkan hasilnya. Gunakan langkah-langkah berikut:
Dari tab Aktivitas , pilih Kondisi Jika untuk menambahkan aktivitas ke kanvas.
Beri nama Periksa Anomali.
Gambar panah Sukses (hijau) dari Periksa Kesehatan Tabel ke Periksa Anomali.
Di tab Aktivitas dari aktivitas Kondisi Jika , atur Ekspresi ke:
@greater(int(activity('Check Table Health').output.resultSets[0].rows[0]['PotentialAnomalyType']), 0)
Ekspresi ini membaca baris pertama yang dikembalikan oleh sys.sp_get_table_health_metrics, mengonversi PotentialAnomalyType menjadi bilangan bulat, dan bernilai true saat nilainya lebih besar dari nol, yang menunjukkan adanya anomali yang terdeteksi pada tabel target.
Langkah 5: Tambahkan aktivitas Notebook (cabang True)
Saat aktivitas If Condition dipilih, pilih Ubah (ikon pensil) di samping Benar. Kanvas beralih ke sub-kanvas yang dibatasi pada cabang True.
Seret aktivitas Notebook ke sub-kanvas True.
Beri nama Run OPTIMIZE.
Di tab Pengaturan:
Buku Catatan: Pilih buku catatan Optimize-Table yang Anda buat di Langkah 1.
Perluas parameter Dasar, lalu tambahkan tiga baris:
Name Type Nilai lakehouse_nameString @pipeline().parameters.lakehouse_nameschema_nameString @pipeline().parameters.schema_nametable_nameString @pipeline().parameters.table_name
Tiga nilai kolom nama harus sama persis dengan nama variabel di sel parameter buku catatan.
Note
Anda dapat membiarkan Aktivitas False kosong. Aktivitas If Condition menganggap cabang False yang kosong sebagai no-op dan melaporkan pipeline sebagai berhasil.
Pipeline Anda yang telah selesai seharusnya terlihat seperti berikut:
Langkah 6: Memvalidasi dan menjalankan
Pilih Validasi pada toolbar alur untuk memeriksa kesalahan konfigurasi.
Pilih Jalankan untuk menjalankan alur secara manual.
Pantau proses berjalan dan konfirmasikan:
-
Periksa kesehatan tabel: periksa output dari aktivitas ini saat aktivitas ini dijalankan. Anda akan melihat hasil prosedur tersimpan
sys.sp_get_table_health_metricsdalam format JSON. -
Periksa Anomali: mengevaluasi dengan benar dengan membaca
PotentialAnomalyTypelangsung dari output Skrip. -
Jalankan OPTIMIZE (hanya jika
PotentialAnomalyType > 0): jika aktivitas Periksa Anomali mengevaluasi True, tinjau input aktivitas Jalankan OPTIMIZE untuk memverifikasi bahwa aktivitas menggunakan parameter yang benar (nama Lakehouse, skema, dan nama tabel) dan periksa output untuk meninjau pesan dariOPTIMIZEoperasi.
-
Periksa kesehatan tabel: periksa output dari aktivitas ini saat aktivitas ini dijalankan. Anda akan melihat hasil prosedur tersimpan
Membersihkan sumber daya
Jika Anda membuat sumber daya hanya untuk tutorial ini dan tidak lagi membutuhkannya, hapus item berikut dari ruang kerja Anda:
- Alur Check-and-Optimize-Table .
- Buku catatan Optimize-Table .