SQL Server Indonesia User Groups Community Menggunakan Expression di Variable - 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 di Variable

Download sample code

Inilah sebuah case yang biasa diminta client pada saya: "Saya ingin sebuah SSIS yang dapat mengambil data berdasarkan tanggal Audit yang terdapat di setiap baris data. Apabila SSIS-nya dijalankan menggunakan job, secara default data yang diambil adalah data H-1. Tetapi apabila SSIS-nya dijalankan secara manual, data diambil berdasarkan tanggal yang saya inputkan."

Pada case seperti inilah Expression dapat digunakan untuk membantu proses development dengan mudah. Solusinya sederhana, dengan menggunakan dua buah variable.

Variable pertama, biasanya saya beri nama UserModifiedDate dengan tipe data String, adalah variable yang akan digunakan user untuk menginputkan tanggal yang diinginkan.

image

Variable kedua saya beri nama ModifiedDate dengan tipe data String. Buka properti variable ModifiedDate, lalu isi properti EvaluateAsExpression dengan True. Kemudian klik tombol … yang terdapat pada properti Expression yang akan membuka dialog Expression Builder.

image

Untuk case tadi, saya harus membuat syntax untuk mengecek apakah variable UserModifiedDate berisi sebuah nilai atau tidak. Apabila berisi nilai, maka nilai ModifiedDate akan diisi dengan UserModifiedDate. Apabila tidak ada isinya, maka nilai ModifiedDate akan diisi dengan tanggal hari kemarin yang tipe datanya telah dikonversi menjadi string.

Untuk mengecek nilai Variable UserModifiedDate, gunakan conditional operator «boolean_expression» ? «when_true» : «when_false» yang fungsinya seperti If Then Else di T-SQL. Silakan buka Book Online dengan keyword ? : (Conditional) (SSIS) untuk keterangan yang lebih detail.

Untuk mengisi nilai ModifiedDate dengan tanggal H-1, kita dapat menggunakan fungsi GETDATE() dan DATEADD( «datepart», «number», «date» )

Notasi expression nya akan seperti ini:

<cek nilai UserModifiedDate> ? <apabila tidak ada isinya, isi dengan H-1> : <apabila ada isinya, isi dengan UserModifieDate>

Dan isi expression-nya:

@[User::UserModifiedDate] == "" ? SUBSTRING((DT_WSTR,29)  GETDATE(),1,10) :  @[User::UserModifiedDate]

Agar solusi ini dapat berhasil dengan baik, pastikan format UserModifiedDate yang diisi user dengan format yyyy-mm-dd

image

Mungkin Anda akan bertanya-tanya, kenapa tipe data ModifiedDate String dan bukannya DateTime. Apabila mengisinya dengan DateTime, akan muncul error pada saat expression-nya di-evaluate karena SSIS gagal mem-parsing expression (DT_DATE) @[User::UserModifiedDate] apabila nilai UserModifiedDate berisi string kosong.

Comments

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