SQL Server Indonesia User Groups Community With or Without Merge Join in 2008 - 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

With or Without Merge Join in 2008

Download sample code

Apabila pada tulisan sebelumnya saya menunjukkan bagaimana melakukan left join dengan menggunakan SSIS 2005, makan pada tulisan yang sekarang saya akan menggunakan SSIS 2008. Sebagai informasi, di 2008 component Lookup telah di-enhance dengan UI yang baru dan tambahan output yaitu No Match Output sebagai output row yang tidak memiliki lookup.

Buka Business Intelligence Studio (BIDS), lalu buat SSIS project baru dengan nama WithOrWithoutMergeJoin2008 dengan cara meng-klik menu File > New Project..., pilih Business Intelligence Projects dari Project Types, pilih Integration Services Project dari Templates, beri nama WithOrWithoutMergeJoin2008 pada Name lalu klik OK

image

Tambahkan satu OLE DB connection pada Package.dtsx, dengan cara membuka menu SSIS > New Connection..., pilih OLEDB lalu klik Add...

image

Klik New...

image

Pilih Native OLE DB\SQL Server Native Client 10.0 dari Provider, ketik localhost atau . (titik) di server name, pilih metode autentikasi yang digunakan (dalam contoh ini saya memilih Use Windows Authentication) lalu klik OK. Klik OK sekali lagi untuk menutup dialog Configure OLE DB Connection Manager

image

Tambahkan Data Flow Task ke dalam Control Flow

image

Double click Data Flow Task, tambahkan OLE DB Source

image

Double click OLE DB Source, pilih LocalHost pada OLE DB connection manager, pilih SQL Command pada Data access mode, lalu isi SQL Command text dengan query berikut lalu klik OK

select 'Prod1' as ProductCode, 10 as Quantity
union all
select 'Prod3' as ProductCode, 5 as Quantity

image

Tambahkan component Lookup ke dalam Data Flow Task, lalu hubungkan output OLE DB Source dengan component tersebut

image

Double click Lookup (perhatikan UI nya yang berbeda dengan di 2005), pada tab General pilih Redirect rows to no match output pada Specify how to handle rows with no matching entries

image

Pada tab Connection pilih LocalHost pada OLE DB connection Manager, pilih Use results of an SQL query lalu isi query dengan SQL Statement berikut

select 1 as ProductID, 'Prod1' as ProductCode
union all
select 2 as ProductID, 'Prod2' as ProductCode

image

Pada tab Columns, klik kanan pada area yang saya beri tandai dengan warna merah lalu pilih Edit Mappings. Berbeda dengan 2005 yang otomatis me-mapping Column dengan nama yang sama, di 2008 kita harus melakukannya secara manual

image

Pilih ProductCode pada Input Column, pilih ProductCode pada ProductCode lalu klik OK. Yang harus kita perhatikan adalah bahwa tipe data pada kedua column harus sama. Pada saat kita memilih Input Column, Lookup Column akan menampilkan column-column dengan tipe data yang sama dengan Input Column

image

Check ProductID pada Available Lookup Columns, lalu klik OK

image

Karena kita ingin mengisi data penjualan yang tidak memiliki ProductID dengan null, pertama-tama kita harus mengetahui dulu tipe data ProductID. Untuk melihatnya, klik kanan pada component Lookup, lalu pilih Show Advanved Editor...

image_thumb43

Pada tab Input and Output Properties, expand Lookup Output, expand Output Columns, pilih Product ID, lalu lihat tipe data nya pada properties. Dari gambar di bawah kita dapat mengetahui bahwa tipe datanya adalah four-byte signed integer (DT_14)

image

Tambahkan component Derived Column pada Data Flow Task, lalu hubungkan output Lookup dengan component tersebut. Pada saat muncul dialog Input Output Selection, pilih Lookup No Match Output pada Output lalu klik OK

image

Double click Derived Column, tambahkan column dengan nama ProductID, NULL(DT_14) sebagai expression, lalu klik OK. NULL(DT_14) adalah sebuah expression untuk mengisi nilai null pada column dengan tipe data four-byte signed integer, tipe data yang sama dengan column ProductID yang terdapat pada component Lookup

image

Tambahkan component Union All, lalu hubungkan output component Lookup dan component Derived Column dengan component Union All

image

Klik menu SSIS > Variables. Pada Variables pane, tambahkan satu variable dengan nama Result dengan tipe data Object

image

Tambahkan component Recordset Destination kedalam Data Flow Task, lalu hubungkan output component Union All dengan component tersebut

image

Double click Recordset Destination. Pada tab Component Properties, pilih User::Result sebagai property VariableName

image

Pada tab Input Columns, check ProductID dan Quantity, lalu click OK

image

Selesai! Pada saat package di-execute, akan terlihat bahwa dari dua data penjualan yang diambil, satu data memiliki lookup (Prod1) dan satu data lainnya tidak memiliki lookup (Prod3), keduanya di-union dan menghasilkan 2 data pada saat disimpan, seperti sebuah transformasi left join dengan menggunakan Merge Join

image

Published Nov 07 2008, 02:55 AM by si_hendrik
Filed under:

Comments

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