Nano Hash - криптовалюты, майнинг, программирование

Компонент сценария SSIS забывает мои переменные

У меня есть пакет SSIS с компонентом сценария преобразования. Он загружает около 460 строк, затем снова перестает выполнять компонент скрипта (я не знаю, почему он это делает), он снова создает мои переменные класса С# и «забывает», где он был «первый раз, когда он запускался», выталкивая нули для переменные.

Есть ли способ заставить компонент скрипта не запускать себя снова после 460 строк? Моя партия, которую я вытягиваю, составляет 10000, так что это не может быть так.

И самое странное, что после 3-х разового запуска пакета (ничего не меняя) он делает все правильно...

public class ScriptMain : UserComponent
{
    string MarkToRem;
    string TypeToRem;
    string SerToRem;
    int IDCnt;

    public override void PreExecute()
    {

        base.PreExecute();

    }
    public override void PostExecute()
    {
        base.PostExecute();


    }


    public override void Input0_ProcessInputRow(Input0Buffer Row)
    {

        MyOutputBuffer.AddRow();
          if(Row.IncomingPrice == "Mark")
          {
            MarkToRem = Row.IncomingCode ; // Setting ver to remember the mark we are in
            MyOutputBuffer.ID = Row.IncomingID.ToString();
            MyOutputBuffer.Mark = MarkToRem;
            MyOutputBuffer.Type = "";
            MyOutputBuffer.Series = "";
            MyOutputBuffer.Code = "";
            MyOutputBuffer.Price = "";
            MyOutputBuffer.Description = "Mark Verander";


          }
          else if( Row.IncomingPrice == "Sub")
          {
             TypeToRem = Row.IncomingCode; // Save our current Type
             SerToRem = Row.IncomingCode; //Save our current Series
             // ============ Output ========================
             MyOutputBuffer.ID = Row.IncomingID.ToString();
             MyOutputBuffer.Mark = MarkToRem;
             MyOutputBuffer.Type = "";
             MyOutputBuffer.Series = "";
             MyOutputBuffer.Code = "";
             MyOutputBuffer.Price = "";
             MyOutputBuffer.Description = "Sub en series verander";

          }
          else if (Row.IncomingPrice == "Series")
          {

              SerToRem = Row.IncomingCode; //Save our current Series
              // ============ Output ========================
              MyOutputBuffer.ID = Row.IncomingID.ToString();
              MyOutputBuffer.Mark = MarkToRem;
              MyOutputBuffer.Type = "";
              MyOutputBuffer.Series = SerToRem;
              MyOutputBuffer.Code = "";
              MyOutputBuffer.Price = "";
              MyOutputBuffer.Description = "Series verander";

          }

          else 
          {
              MyOutputBuffer.ID = Row.IncomingID.ToString();
              MyOutputBuffer.Mark = MarkToRem;
              MyOutputBuffer.Type = TypeToRem;
              MyOutputBuffer.Series =SerToRem;
              MyOutputBuffer.Code = Row.IncomingCode;
              MyOutputBuffer.Price = Row.IncomingPrice;
              MyOutputBuffer.Description = Row.IncomingDiscription;
          }
          IDCnt = IDCnt + 1;

    }


}

Первые 9 строк выглядят так. Для входящих данных

ID  Code    Price   Discription
1   184pin DDR  Mark    
2   DDR - Non-ECC   Sub 
3   ME-A1GDV4   388 Adata AD1U400A1G3-R 1Gb ddr-400 ( pc3200 ) , CL3 - 184pin - lifetime warranty
4   ME-C512DV4  199 Corsair Valueselect  VS512MB400 512mb ddr-400 ( pc3200 ) , CL2.5 - 184pin -             lifetime warranty
5   ME-C1GDV4   399 Corsair Valueselect  VS1GB400C3 1Gb ddr-400 ( pc3200 ) , CL3 - 184pin - lifetime warranty
6   240pin DDR2 Mark    
7   DDR2 - Non-ECC  Sub 
8   Adata - lifetime warranty   Series  
9   ME-A2VD26C5 345 Adata AD2U667B2G5 Valuselect , 2Gb ddr2-667 ( pc2-5400 ) , CL5 , 1.8v -     240pin -    lifetime warranty 
15.12.2014

  • Добавлен код — обратите внимание, он создает строку MarkToRem; StringTypeToRem; строка СерТоРем; снова, потому что по какой-то причине он снова выполняет весь компонент скрипта через +- 430 строк 15.12.2014
  • Я собрал пакет воспроизведения и некоторые образцы данных, но я не могу генерировать какие-либо ошибки во время выполнения. Возможно, я неправильно понимаю проблему. Не могли бы вы уточнить, что будет означать сброс переменных? Как выглядят некоторые из этих данных для IncomingID, IncomingCode и IncomingPrice? Цена, как правило, ограничивается Mark, Sub и Series, но может содержать и другие значения. 15.12.2014
  • Ошибок не будет, по какой-то причине он начинается с 437 строк, он начинает выполнять компонент скрипта с нуля, таким образом снова создавая первые veribles, объявленные сверху, и теряет значение, где оно было. 17.12.2014

Ответы:


1

Решил это.

По возможности избегайте асинхронного преобразования

Среда выполнения SSIS выполняет все задачи, кроме задачи потока данных, в определенной последовательности. Всякий раз, когда модуль среды выполнения служб SSIS сталкивается с задачей потока данных, он передает выполнение задачи потока данных механизму конвейера потока данных.

Механизм конвейера потока данных разбивает выполнение задачи потока данных на одно или несколько деревьев выполнения и может выполнять два или более дерева выполнения параллельно для достижения высокой производительности.

Синхронные преобразования получают запись, обрабатывают ее и передают другому преобразованию или месту назначения в последовательности. Обработка записи не зависит от других входящих строк.

Принимая во внимание, что асинхронное преобразование требует дополнительных буферов для своего вывода и не использует входящие входные буферы. Он также ожидает поступления всех входящих строк для обработки, поэтому асинхронное преобразование выполняется медленнее, и его следует по возможности избегать. Например, вместо использования преобразования сортировки вы можете получить отсортированные результаты из самого источника, используя предложение ORDER BY.

17.12.2014
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..