Integrasi Git untuk pengembangan gudang Fabric

Berlaku untuk: ✅ Gudang di Microsoft Fabric

Artikel ini menjelaskan keuntungan mengembangkan dan menerapkan Fabric Data Warehouse dengan integrasi Git bawaan Fabric.

Important

Fitur ini sedang dalam tahap pratinjau.

Dengan menggunakan integrasi Git di Fabric, tim dapat menerapkan praktik kontrol sumber modern dalam pengembangan gudang. Pengembang dapat mengisolasi perubahan pada cabang, melacak evolusi skema melalui commit, berkolaborasi melalui pull request, dan menyinkronkan pembaruan antara repositori Git dan workspace Fabric.

Skenario umum meliputi:

  • Mengembangkan perubahan skema dengan aman di cabang dan ruang kerja
  • Mengubah versi objek gudang di Git
  • Berkolaborasi di seluruh cabang dan ruang kerja
  • Mempromosikan perubahan yang tervalidasi antar cabang
  • Menjaga item ruang kerja (warehouse dan lainnya) tetap selaras dengan sumber acuan utama Git

Untuk menjaga konsistensi, keterlacakan, dan keandalan sepanjang siklus hidup pengembangan gudang, Anda perlu memahami alur kerja ini.

Diagram siklus hidup pengembangan integrasi Git Fabric Warehouse.

Saat Anda menghubungkan ruang kerja Fabric Data Warehouse ke Git, Anda melakukan commit definisi gudang data sebagai proyek basis data. Proyek ini menjadi representasi otoritatif dari skema gudang dalam kontrol sumber dan berfungsi sebagai fondasi bagi aktivitas pengembangan yang berkelanjutan. Di source control explorer, skema muncul sebagai file individual .sql .

Tangkapan layar skema gudang di source control explorer.

Dengan menggunakan Fabric Git Integration dan Fabric Data Warehouse, Anda dapat:

Perbandingan

Selama proses sinkronisasi ini, Fabric menggunakan penyebaran skema inkremental berbasis DacFx untuk menerapkan perubahan. Pendekatan ini hanya menerapkan perbedaan skema yang relevan pada gudang, bukan memperbarui seluruh definisi gudang.

Ekstraksi bertahap membantu mengurangi perubahan yang tidak perlu dalam sistem kontrol versi, menjaga perbedaan skema yang lebih bersih antarcabang, dan mendukung alur kerja pencabangan dan penggabungan yang efisien. Karena proses ekstraksi bersifat sadar skema, proses ini juga memungkinkan perbandingan dan validasi yang andal antara status workspace dan definisi yang dilacak Git.

Standarisasi cara skema gudang diekstrak dan disimpan meningkatkan konsistensi di seluruh lingkungan pengembangan. Definisi skema tetap stabil di berbagai cabang, perbedaan lebih akurat mencerminkan perubahan pengembangan yang disengaja, dan kontrol sumber menjadi dasar yang dapat diandalkan untuk penerapan, kolaborasi, dan manajemen siklus hidup.

File XMLA.json itu sendiri dikecualikan dari alur kerja integrasi Git. Fabric mengecualikan file ini dari commit dan pembaruan sehingga metadata semantik model default tidak secara tidak sengaja disimpan di Git. Saat menyinkronkan ruang kerja dari Git, XMLA.json diabaikan, yang membantu mencegah konflik, penimpaan yang tidak diinginkan, dan gangguan selama peralihan cabang atau pembaruan dari Git.

Batasan dalam kontrol sumber

  • Fitur keamanan SQL seperti izin memerlukan pendekatan berbasis skrip untuk ekspor dan migrasi. Pertimbangkan untuk menggunakan skrip pasca-penyebaran dalam proyek database SQL. Anda dapat mengonfigurasi skrip pasca-penerapan dalam proyek dengan ekstensi SQL Database Projects yang tersedia di Visual Studio Code.

  • Ketergantungan lintas item antara gudang dan endpoint analitik SQL saat ini belum didukung dalam alur kerja pengembangan. Akibatnya, skenario yang bergantung pada perubahan terkoordinasi pada item-item ini mungkin tidak berjalan dengan andal.

  • Skrip pra-deployment atau pasca-deployment dan konfigurasi publikasi tambahan yang ditambahkan langsung ke proyek database melalui Git tidak dipertahankan sebagai bagian dari alur kerja pengembangan. Anda mungkin perlu mengelola konfigurasi ini secara terpisah di luar ruang kerja Fabric.

  • Komit selektif di tingkat gudang saat ini belum didukung. Perubahan dilakukan pada tingkat item gudang, bukan pada tingkat objek yang lebih rinci.

  • Dukungan kontrol versi untuk endpoint analitik SQL saat ini belum tersedia. Keterbatasan ini dapat membatasi manajemen siklus hidup end-to-end ketika solusi mencakup baik warehouse maupun endpoint SQL analytics.

Batasan dalam integrasi Git

  • Ketika dua atau lebih item gudang saling mereferensikan, hal itu membentuk ketergantungan siklik. Sistem mendeteksi referensi melingkar ini selama operasi branch-out atau sinkronisasi Git-to-workspace, menyebabkan operasi tersebut gagal. Hindari ketergantungan siklik antar item.
  • Saat ini, jangan membuat Dataflow Gen2 dengan tujuan output ke gudang. Item baru bernama DataflowsStagingWarehouse muncul di repositori dan memblokir penerapan dan pembaruan dari Git.
  • Dependensi lintas item, pengurutan item, dan kesenjangan sinkronisasi antara titik akhir analitik SQL dan gudang berdampak pada alur kerja "bercabang ke ruang kerja baru atau yang sudah ada" dan "beralih ke cabang yang berbeda" selama pengembangan dan integrasi berkelanjutan.
  • Jika sebuah objek merujuk objek lain di gudang yang sama dengan menggunakan penamaan tiga bagian (database.schema.object), commit atau pembaruan dari Git bisa gagal. Untuk informasi lebih lanjut dan cara mengatasinya, lihat Referensi ke objek milik gudang itu sendiri menggunakan nama tiga bagian.
  • Jika Anda mengubah kolom yang telah IDENTITY didefinisikan, commit atau pembaruan dari Git dapat gagal sampai IDENTITY_INSERT diaktifkan untuk tabel tersebut.
  • Jika repositori berisi file .sqlproj yang mengunci versi SDK Microsoft.Build.Sql yang lebih lama, melakukan commit atau pembaruan dari Git dapat gagal karena SDK lama tidak mengenali sintaks warehouse yang lebih baru seperti kolom IDENTITY dan CLUSTER BY. Untuk informasi lebih lanjut dan solusi sementara, lihat .sqlproj yang sudah tidak terkini di repositori Git.
  • Jika sebuah objek merujuk ke dua tabel atau lebih dalam data warehouse lain tanpa mengualifikasi setiap kolom dengan alias, melakukan commit atau memperbarui dari Git dapat gagal. Untuk informasi lebih lanjut dan solusi sementara, lihat Kolom tidak memenuhi syarat dalam objek yang merujuk pada dua atau lebih tabel di gudang lain.
  • Jika skrip Anda merujuk pada dua atau lebih objek berbeda dalam skema yang sama dari gudang lain dan mengeja nama skema dengan huruf kapital yang tidak konsisten, commit atau pembaruan dari Git bisa gagal. Untuk informasi lebih lanjut dan solusi sementara, lihat Kapitalisasi tidak konsisten pada nama skema.
  • Kesalahan kolom yang ambigu, yang daftar kandidatnya berisi pemisah ::, dapat terjadi saat melakukan commit atau pembaruan dari Git, bahkan ketika tidak ada ambiguitas yang sebenarnya. Untuk informasi lebih lanjut dan solusi sementara, lihat Kesalahan kolom ambigu dengan objek kandidat duplikat.

Skenario yang tidak didukung

Alur kerja CI/CD berikut ini tidak didukung secara resmi ketika gudang di ruang kerja yang berbeda memiliki kolasasi yang berbeda. Meskipun operasi ini mungkin berhasil tanpa kesalahan, operasi ini dapat mengakibatkan kesalahan metadata.

Dalam semua skenario ini, jika terjadi ketidakcocokan kolase, gunakan skrip Python scripts/dw-collation-error-update-tmsl/pbi_interactive.py di kotak alat Fabric GitHub untuk memperbarui kolase himpunan data (TMSL) agar sesuai dengan kolase gudang.

Scenario Deskripsi Risiko
Jalur penerapan Mempromosikan konten gudang melalui tahap alur (misalnya, Dev → Test → Prod) tidak didukung jika gudang target dibuat dengan kolasi yang berbeda dari sumber. Penyebaran mungkin berhasil, tetapi pengurutan himpunan data tidak diperbarui agar sesuai dengan pengurutan gudang target.
Mencabangkan ke ruang kerja baru atau yang sudah ada Menggunakan integrasi Git untuk membuat cabang dari ruang kerja yang ada ke ruang kerja baru atau yang sudah ada, di mana gudang data memiliki pengurutan yang berbeda, tidak didukung. Konten gudang disinkronkan, tetapi metadata kolase tidak direkonsiliasi.
Mengalihkan cabang pada ruang kerja Beralih ke cabang yang terkait dengan gudang kolase yang berbeda di ruang kerja yang terhubung dengan Git tidak didukung. Konten yang disinkronkan mungkin membawa asumsi pengurutan yang tidak sesuai dengan gudang saat ini.
Menggabungkan perubahan antar ruang kerja melalui cabang Menggabungkan cabang-cabang Git di ruang kerja yang gudangnya memiliki pengurutan berbeda tidak didukung. Penggabungan mungkin berhasil di tingkat Git, tetapi kolase himpunan data yang dihasilkan tidak mencerminkan kolase gudang target.

Langkah selanjutnya