BERGABUNG dalam Paket SSIS
Berlaku untuk: SQL Server SSIS Integration Runtime di Azure Data Factory
Dalam rilis SQL Server Integration Services saat ini, pernyataan SQL dalam tugas Execute SQL dapat berisi pernyataan MERGE. Pernyataan MERGE ini memungkinkan Anda untuk menyelesaikan beberapa operasi INSERT, UPDATE, dan DELETE dalam satu pernyataan.
Untuk menggunakan pernyataan MERGE dalam paket, ikuti langkah-langkah berikut:
Buat tugas Aliran Data yang memuat, mengubah, dan menyimpan data sumber ke tabel sementara atau penahapan.
Buat tugas Jalankan SQL yang berisi pernyataan MERGE.
Sambungkan tugas Aliran Data ke tugas Jalankan SQL, dan gunakan data dalam tabel penahapan sebagai input untuk pernyataan MERGE.
Catatan
Meskipun pernyataan MERGE biasanya memerlukan tabel penahapan dalam skenario ini, performa pernyataan MERGE biasanya melebihi pencarian baris demi baris yang dilakukan oleh transformasi Pencarian. MERGE juga berguna ketika ukuran besar tabel pencarian akan menguji memori yang tersedia untuk transformasi Pencarian untuk penembolokan tabel referensinya.
Menggunakan MERGE
Biasanya, Anda menggunakan pernyataan MERGE saat Anda ingin menerapkan perubahan yang menyertakan penyisipan, pembaruan, dan penghapusan dari satu tabel ke tabel lain. Sebelum SQL Server 2008 (10.0.x), proses ini memerlukan transformasi Pencarian dan beberapa transformasi Perintah OLE DB. Transformasi Pencarian melakukan pencarian baris demi baris untuk menentukan apakah setiap baris baru atau diubah. Transformasi Perintah OLE DB kemudian melakukan operasi INSERT, UPDATE, dan DELETE yang diperlukan. Dimulai di SQL Server 2008 (10.0.x), satu pernyataan MERGE dapat menggantikan transformasi Pencarian dan transformasi Perintah OLE DB yang sesuai.
MERGE dengan Beban Inkremental
Fungsionalitas pengambilan data perubahan yang baru di SQL Server 2008 (10.0.x) memudahkan untuk melakukan beban bertahap dengan andal ke gudang data. Sebagai alternatif untuk menggunakan transformasi Perintah OLE DB berparameter untuk melakukan penyisipan dan pembaruan, Anda dapat menggunakan pernyataan MERGE untuk menggabungkan kedua operasi.
Untuk informasi selengkapnya, lihat Menerapkan Perubahan ke Tujuan.
MERGE dalam Skenario Lain
Dalam skenario berikut, Anda dapat menggunakan pernyataan MERGE baik di luar atau di dalam paket Layanan Integrasi. Namun, paket Integration Services sering diperlukan untuk memuat data ini dari beberapa sumber heterogen, lalu untuk menggabungkan dan membersihkan data. Oleh karena itu, Anda mungkin mempertimbangkan untuk menggunakan pernyataan MERGE dalam paket untuk kenyamanan dan kemudahan pemeliharaan.
Lacak Kebiasaan Membeli
Tabel FactBuyingHabits di gudang data melacak tanggal terakhir di mana pelanggan membeli produk tertentu. Tabel terdiri dari kolom ProductID, CustomerID, dan PurchaseDate. Setiap minggu, database transaksi ini menghasilkan tabel PurchaseRecords yang menyertakan pembelian yang dilakukan selama minggu tersebut. Tujuannya adalah untuk menggunakan satu pernyataan MERGE untuk menggabungkan informasi dalam tabel PurchaseRecords ke dalam tabel FactBuyingHabits. Untuk pasangan pelanggan produk yang tidak ada, pernyataan MERGE menyisipkan baris baru. Untuk pasangan pelanggan produk yang ada, pernyataan MERGE memperbarui tanggal pembelian terbaru.
Lacak Riwayat Harga
Tabel DimBook mewakili daftar buku dalam inventaris penjual buku dan mengidentifikasi riwayat harga setiap buku. Tabel ini memiliki kolom ini: ISBN, ProductID, Price, Shelf, dan IsCurrent. Tabel ini juga memiliki satu baris untuk setiap harga yang telah dimiliki buku. Salah satu baris ini berisi harga saat ini. Untuk menunjukkan baris mana yang berisi harga saat ini, nilai kolom IsCurrent untuk baris tersebut diatur ke 1.
Setiap minggu, database menghasilkan tabel WeeklyChanges yang berisi perubahan harga untuk minggu tersebut dan buku baru yang ditambahkan selama seminggu. Dengan menggunakan satu pernyataan MERGE, Anda dapat menerapkan perubahan dalam tabel WeeklyChanges ke tabel DimBook. Pernyataan MERGE menyisipkan baris baru untuk buku yang baru ditambahkan, dan memperbarui kolom IsCurrent menjadi 0 untuk baris buku yang ada yang harganya telah berubah. Pernyataan MERGE juga menyisipkan baris baru untuk buku yang harganya telah berubah, dan untuk baris baru ini, menetapkan nilai kolom IsCurrent ke 1.
Menggabungkan Tabel dengan Data Baru Terhadap Tabel Lama
Database memodelkan properti objek dengan menggunakan "skema terbuka," yaitu, tabel berisi pasangan nama-nilai untuk setiap properti. Tabel Properti memiliki tiga kolom: EntityID, PropertyID, dan Value. Tabel NewProperties yang merupakan versi tabel yang lebih baru harus disinkronkan dengan tabel Properti. Untuk menyinkronkan kedua tabel ini, Anda bisa menggunakan satu pernyataan MERGE untuk melakukan operasi berikut:
Hapus properti dari tabel Properti jika tidak ada dari tabel NewProperties.
Perbarui nilai untuk properti yang ada di tabel Properti dengan nilai baru yang ditemukan dalam tabel NewProperties.
Sisipkan properti baru untuk properti yang ada dalam tabel NewProperties tetapi tidak ditemukan dalam tabel Properti.
Pendekatan ini berguna dalam skenario yang menyerupai skenario replikasi, di mana tujuannya adalah untuk menyimpan data dalam dua tabel di dua server yang disinkronkan.
Lacak Inventori
Database Inventori memiliki tabel ProductsInventory yang memiliki kolom ProductID dan StockOnHand. Tabel Pengiriman dengan kolom ProductID, CustomerID, dan Quantity melacak pengiriman produk kepada pelanggan. Tabel ProductInventory harus diperbarui setiap hari berdasarkan informasi dalam tabel Pengiriman. Satu pernyataan MERGE dapat mengurangi inventori dalam tabel ProductInventory berdasarkan pengiriman yang dilakukan. Jika inventori untuk produk telah dikurangi menjadi 0, pernyataan MERGE tersebut juga dapat menghapus baris produk tersebut dari tabel ProductInventory.