Назначение SSIS Excel вставка нулевых значений в другие столбцы

#c# #.net #sql-server #ssis #automation

#c# #.net #sql-сервер #ssis #автоматизация

Вопрос:

У меня есть 2 компонента скрипта, которые извлекают данные из объектов результирующего набора, например User ::AllXData и User ::AllYData.

Он выполняется через цикл foreach, и данные сохраняются в таблице данных.

Затем я добавляю данные в таблицу Excel, используя Excel destination. Теперь, когда я это делаю. Все данные, соответствующие столбцу A (т.Е. Данные из User::AllXData), добавляются на лист Excel, но столбец B заполняется нулевыми значениями до конца данных столбца A.

Затем столбец B заполняется, оставляя столбец A с нулевыми данными. Предполагается, что он должен быть выровнен.

Есть ли обходной путь для этого?

Редактировать: Представление о том, что происходит

Комментарии:

1. У вас есть два источника сценариев, вставляющих отдельные строки в одну и ту же таблицу — конечно, половина столбцов будет иметь значение null в каждом наборе данных. Вероятно, вам нужно вставить исходные тексты сценариев в отдельные таблицы данных, а затем объединить их в третьем источнике сценариев. Как данные должны быть выровнены? У вас есть три значения в столбце A, но четыре в столбце B, так что это, очевидно, не выравнивание 1: 1.

2. @AlwaysLearning Ой, виноват. Теперь это отредактировано. Итак, вы говорите, что выходной столбец компонентов сценария будет использоваться в качестве входных данных для другого компонента сценария? Не могли бы вы, пожалуйста, подробнее остановиться на этой части?

3. Является ли источник тем же самым? Можете ли вы написать запрос, который форматирует набор данных так, как вы хотите? Если нет, добавьте row_number к отсортированным данным и выполните объединение слиянием с row_number.

4. @KeithL Я бы отсортировал и объединил данные, но я не мог, потому что мне нужны были данные в файле в том виде, в каком они есть из моего источника. Я наткнулся на решение этой проблемы, проверьте ответ на этот пост

Ответ №1:

После долгого измельчения и выполнения множества тестов, наконец, наткнулся на решение.

Ответ на этот вопрос довольно прост. Вместо того, чтобы использовать два объекта в качестве результирующего набора, лучше использовать только один.

Если вы собираетесь запрашивать из одного источника, включите все необходимые столбцы в вашем SQL-запросе в один набор результатов объекта и используйте его как переменную, доступную только для чтения в компоненте сценария.

Создайте единую таблицу данных, которая включает все необходимые столбцы и добавляет их в ваше назначение Excel строка за строкой без каких-либо нулевых значений.

Вот статья, в которой есть хороший пример.