SQL Server Indonesia User Groups Community Menggunakan Expression Untuk Mengatur Task yang Boleh Dieksekusi - drowned in code

SQL Server Indonesia User Groups Community

SQL Server Indonesia User Groups Community
Welcome to SQL Server Indonesia User Groups Community Sign in | Join | Help
in Search

drowned in code

eat, sleep, breath, SQL

Menggunakan Expression Untuk Mengatur Task yang Boleh Dieksekusi

Download sample code

Terkadang saat mengerjakan sebuah SSIS project, saya menemui case dimana suatu task hanya boleh dieksekusi apabila memenuhi kondisi tertentu. Salah satu case-nya adalah task yang hanya boleh dieksekusi pada akhir bulan atau setiap tanggal satu saja setiap bulannya.

Di SSIS, kita mengenal precedence constraint -yang bentuknya seperti anak panah-, yang menghubungkan antara executable, container, dan task dalam control flow. Di dalam precedence constraint tersebut kita dapat memasang kondisi dengan menggunakan expression untuk menentukan apakah task-nya dapat dieksekusi atau tidak. Untuk mempermudah contoh yang saya ceritakan tadi, saya akan menggunakan package yang telah saya buat pada post sebelumnya.

Pertama, saya menambahkan sebuah variable dengan nama LogicalDate dengan tipe data Datetime yang expression-nya berupa konversi variable ModifiedDate kedalam tipe data DT_DATE.

image

Kemudian saya menambahkan dua buah script task kedalam control flow dengan nama Daily Task dan Monthly Task, lalu menghubungkan Daily Task dengan Monthly Task.

image

Klik ganda pada precedence contraint yang menghubungkan antara kedua task tadi untuk menampilkan Precedence Constraint Editor. Pada Evaluation Expression pilih Expression and Constraint. Berhubung kita akan mengisi kondisi agar Monthly Task hanya boleh berjalan pada tanggal satu saja, isi Expression-nya dengan expression Day(@[User::LogicalDate]) == 1 lalu klik OK. Anda dapat mengklik tombol Test untuk mengecek apakah expression yang Anda masukkan sudah benar atau belum.

image

Sekarang, apabila kita mengisi variable UserModifiedDate dengan 2009-07-20 lalu mengeksekusi package-nya, hanya Daily Task yang dieksekusi. Hal ini dapat Anda lihat dari warna Daily Task yang berwarna hijau, sedangkan Monthly Task-nya tetap berwarna putih.

image

Bandingkan jika Anda mengeksekusi package dengan mengisi nilai variable UserModifiedDate dengan 2009-08-01, kedua task tadi akan berwarna hijau yang artinya keduanya dieksekusi.

image

Comments

No Comments
Powered by Community Server (Commercial Edition), by Telligent Systems