2014-11-11 4 views
1

Я создаю пакет SSIS, который будет заполнять данные из таблицы Excel в нашу базу данных для отчетности.Выражение SSIS для изоляции строки

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

Мне нужно выражение SSIS (или несколько) для использования в преобразовании производного столбца, чтобы вывести название городов из имени филиала. Проблема заключается в том, что интервалы и размещение имен различаются. Я попытался использовать Token, Sub string и Right and Left в сочетании с другими выражениями, и я всегда, кажется, что-то вырезал.

Есть ли кто-нибудь еще в этом разбираться и как я могу это исправить. (Я не знаком с C#, чтобы использовать компонент скрипта).

Вот образец данных, которые у меня есть.

Branch Name 
JS OMAHA - 09 
JS SIOUX FALLS - 48 
JS DOWNINGTOWN - 53 
JS ST PAUL - 70 
JS BLOOMINGTON - 103 
JS PITTSBURGH NORTH -149- 
JS TINTON FALLS - 186 
JS BLAINE - 337 
JS ROCHESTER MN - 423 

ответ

1

Хотя вы заявили, что не знакомы с компонентами скрипта - они являются правильным инструментом для работы. Вы получите гораздо большую гибкость, используя код C# (или VB.Net) для управления вашими строками. В Интернете есть несколько хороших обучающих программ, в которых показано, как использовать задачу сценария, а также много информации о манипуляциях с строками в C#.

+0

Если ОП не знаком с C#, то я не согласен, скрипты - это не способ сделать это. –

+0

@Nick.McDermaid. Конечно, это не единственный способ, но, безусловно, самый гибкий. Что бы вы предложили вместо этого? Я думаю, вы могли бы использовать Derived Column, но это быстро стало бы громоздким и сложным. –

+1

Ниже приведены три других предложения. Я думаю, что важно, чтобы решение было в чем-то, с которым плакат знаком ... что может быть ни одним из четырех предложенных методов :) –

3

У вас есть список действующих городов, сидящих за столом? Если это так, вы можете использовать преобразование поиска.

Допустит, ваш список, если город находится в таблице под названием city

На вкладке General Поднимается No Cache

На Вкладке Подключения выбрать city таблицы

На вкладке вкладки Столбцы соответствуют столбцу Branch Name столбцу города в вашем city стол

В вкладке Дополнительно отметьте Исправьте оператор SQL и изменить конец where [Branch Name] Like '%' + ? '%'

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

Другой способ загрузить все это в промежуточную таблицу и сделать UPDATE, также используя LIKE

Что бы вы ни делали, это поможет иметь список допустимых городов в таблице

The Другой способ - сделать предположение о токенах в данных и использовать строковые функции в производном преобразовании столбцов, чтобы извлечь его, но вы можете получить некоторые неожиданные результаты.

Я могу расширить их, если вы пожелаете, но я не буду тратить время, если вы никогда не вернетесь к вопросу.

+0

Мне нравится идея City Table. Это было бы очень просто и довольно быстро. Я попробовал Derived Column с помощью Token, но с несогласованными интервалами и размерами персонажей было сложно получить все. Сначала я попробую Look up Table. Спасибо Вам за информацию. –

+0

My Current SQL Statement выглядит так. выберите * из (выберите * из [dbo]. [JOHNSTONE_CityLkUp]) [refTable] где [refTable]. [City] =? Когда я его изменяю, я получаю большой красный X в моей трансформации Lookup. Что я делаю не так? –

+1

Что вы изменили? Попробуйте поэтапно, чтобы решить, в чем проблема. Сначала попробуйте '[City] LIKE?', Затем попробуйте '[City] LIKE '%' +?', Затем попробуйте '[City] LIKE '%' +? + '%' '. Если вы наведите курсор на задачу, вы получите подсказку, дающую вам ключ. –