Mám skriptovou komponentu, která přijímá záznamy z databázové tabulky SQL Azure. Skript poté vyvolá webovou službu, která vrací počet neúspěšných a úspěšných záznamů.
Pro všechny záznamy bych chtěl přidat pole Stav, které má buď „úspěch“ nebo „selhání“, a tím se získá výstup ze komponenty skriptu.
Poté tyto výstupy přihlásím do textového souboru.
Problém: Nebyl jsem schopen přidat stav pro každý vstupní záznam, protože volání webové služby se děje pouze po spuštění.
Zkusil jsem to, ale stále nefunguje:
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);
}
}
Všechno v transformaci se provádí v rámci Input0_ProcessInputRow. Řešení by v zásadě bylo
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);
}
Pravděpodobně budete moci provést výstupní kroky v PostExecute, CreateNewOutputRows se nespustí v transformaci, pouze v cílových skriptech.
Nejsem příliš zdatný v SSIS, ale myslím, že byste mohli vyzkoušet následující myšlenky:
Pak byste měli mít na výstupu prázdný sloupec a budete jej muset naplnit některými daty pro každý ze vstupních řádků:
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
Row.Status = IIf(String.IsNullOrEmpty(rowValues.GetValue(1).ToString()), 0, 1)
To vám pomůže přidat sloupec Stav do výstupní tabulky. Doufám, že to je to, co jste chtěli.