it-swarm.asia

Komponen Skrip SSIS - Cara mengubah Output0Buffer

Saya sudah komponen skrip yang menerima catatan dari tabel database SQL Azure. Script kemudian memanggil layanan web, yang mengembalikan jumlah catatan yang gagal dan sukses.

Untuk semua catatan, saya ingin menambahkan bidang Status yang memiliki "sukses" atau "gagal" dan ini mendapat output dari komponen skrip.

Saya kemudian mencatat output tersebut ke file teks.

Masalah: Saya tidak dapat menambahkan status untuk setiap catatan input karena panggilan layanan web hanya terjadi pada eksekusi posting.

Saya mencoba ini tetapi masih tidak berhasil:

public override void Input0_ProcessInputRow(Input0Buffer Row)
{
         listOfData.Add(new ClockData 
         {
             TimeClockID=Row.TimeClockID,
             PersonID=Row.EmployeeCode,
             LocationCode=Row.ClockInServiceContextID,
             ClockInDateTime=Row.ClockInDateTime,
             ClockOutDateTime=Row.ClockOutDateTime

         });
 }

 public override void CreateNewOutputRows()
 {
     MessageBox.Show("Test CreateNewOutputRows");
     MessageBox.Show(listOfData.Count.ToString());
     foreach (var item in listOfData)
     {
         Output0Buffer.AddRow();
         Output0Buffer.EmployeeCode = item.PersonID;
         MessageBox.Show(item.PersonID);
     }
 }
10
flybyte

Segala sesuatu dalam Transformasi dilakukan dalam Input0_ProcessInputRow Solusinya pada dasarnya

public override void Input0_ProcessInputRow(Input0Buffer Row)
{
         listOfData.Add(new ClockData 
         {
             TimeClockID=Row.TimeClockID,
             PersonID=Row.EmployeeCode,
             LocationCode=Row.ClockInServiceContextID,
             ClockInDateTime=Row.ClockInDateTime,
             ClockOutDateTime=Row.ClockOutDateTime
         });
         Output0Buffer.AddRow();
         Output0Buffer.EmployeeCode = item.PersonID;
         MessageBox.Show(item.PersonID);
}

Anda mungkin dapat melakukan langkah-langkah output di PostExecute, CreateNewOutputRows tidak berjalan di Transformasi, hanya di skrip Tujuan.

6
JohnDavid

Saya tidak terlalu mahir dalam SSIS, tetapi saya pikir Anda dapat mencoba ide-ide berikut:

  • buka komponen skrip dan edit,
  • pergi ke bagian Input dan Output (bagian 3),
  • pergi ke Output0 - Output kolom,
  • tambahkan kolom baru (berikan nama dan jenis, misalkan Status - boolean).

Maka Anda akan memiliki kolom kosong untuk output Anda dan Anda perlu mengisinya dengan beberapa data untuk setiap baris input:

Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
    Row.Status = IIf(String.IsNullOrEmpty(rowValues.GetValue(1).ToString()), 0, 1)

Ini akan membantu Anda menambahkan kolom Status ke tabel output Anda. Semoga ini yang Anda inginkan.

3
Marian