SQL Server Indonesia User Groups Community Melakukan Top-N di SSIS versi 2 - 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

Melakukan Top-N di SSIS versi 2

download sample code

Apabila sebelumnya untuk melakukan Top-N saya membutuhkan Script Component dan Conditional Split, maka kali ini saya ingin menunjukkan cara yang lebih simple, dengan Script Component saja. Idenya sederhana, yaitu membuang row-row yang berada diluar top rows. Untuk melakukannya, dua keyword yang harus kita paham adalah ExclusionGroup dan DirectRow. Silakan baca SQL Server Books Online untuk keterangan lebih detil mengenai kedua keyword ini.

Untuk mempersingkat step-by-step melakukannya, saya akan langsung ke bagian script component.

Pada tab Script, tambahkan variable User::Top kedalam ReadOnlyVariables

image

Buka tab Inputs and Outputs, pilih Output 0, dan set property ExclusionGroup-nya dengan nilai 1.

image

Isi script component dengan script berikut

   1:      private Int32 nCounter=0;
   2:   
   3:      public override void ProcessInput(int InputID, Microsoft.SqlServer.Dts.Pipeline.PipelineBuffer Buffer)
   4:      {
   5:          while (Buffer.NextRow())
   6:          {
   7:              if (nCounter < this.Variables.Top)
   8:              {
   9:                  nCounter++;
  10:                  Buffer.DirectRow(this.ComponentMetaData.OutputCollection[0].ID);
  11:              }
  12:          }
  13:      }

Script diatas akan mengecek apakah input row yang sedang ditransformasi masih berada dalam top rows. Apabila row-nya masih berada dalam top rows, row tersebut akan dikirim ke output.

Pada saat dieksekusi, hasil yang kita dapatkan akan sama dengan hasil pada blog sebelumnya, 20 data teratas.

image

Published May 16 2009, 02:21 AM by si_hendrik
Filed under:

Comments

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