Создать переменную из производного столбца служб SSIS
В моем пакете служб SSIS у меня есть компонент Script, который создает +1 новый идентификатор клиента при запуске пакета.
Я хочу присвоить числовое значение идентификатора переменной. Переменная будет использоваться в задаче файловой системы для создания каталога с идентификатором клиента в качестве имени папки.
Example - C:\Customer Orders\<CO_ID>
Я создал преобразование производного столбца (последовательности) в потоке данных с именем (CO_ID). Тем не менее, я застрял на правильный синтаксис для выражения переменной.
Любой совет приветствуется.
2 ответа
Derived column Transformation
используется внутри Dataflow task
, а также Execute System Task
на Control Flow
уровень, поэтому любое изменение переменной не видно Control Flow
уровень до Dataflow Task
выполнение выполнено. Так что он будет создавать каталог только для последнего CO_ID
,
Если вам нужно создать каталог для каждого клиента, и при условии, что вы создаете идентификатор внутри компонента скрипта. Просто создайте из него каталог, используя следующий код (Vb.Net)
If Not Io.Directory.Exists("c:\Customer Orders\" & COID.ToString()) Then
IO.Directory.CreateDirectory(c:\Customer Orders\" & COID.ToString())
End If
Иначе, если вам нужно только создать столбцы и зациклить их позже, я думаю, что вам нужно только привести CO_ID
столбец к DT_WSTR
:
"C:\\Customer Orders\\" + (DT_WSTR, 50) [CO_ID]
Без сообщения об ошибке и более подробной информации, трудно сказать, что не так. Но я думаю, что вы пытаетесь преобразовать число в строку, а затем объединить его в другую строку (путь). Если это так, то выражение вашего производного столбца должно выглядеть примерно так:
"c:\Customer Orders\" + (DT_STR, 10,1252) CO_ID
Если обратная косая черта создает вам проблему (не могу вспомнить, нужно ли их экранировать), попробуйте удвоить их:
"c:\\Customer Orders\\" + (DT_STR, 10,1252) CO_ID