Памятка по выражениям SSIS
Задача |
Выражение |
---|---|
Создать имя файла с сегодняшней датой |
Выражение в плоском файле или диспетчере файловых подключений:
"C:\\Project\\MyExtract" + (DT_WSTR, 30)(DT_DBDATE)GETDATE() + ".csv"
Пример вывода выражения: |
Использовать дату из 2 цифр (например, «03» вместо «3» вместо «3»). |
RIGHT("0" + (DT_WSTR, 2)MONTH(GETDATE()),2)
Пример вывода выражения: |
Множественное условие выражения if |
В этом примере инструкция определяет, что если ColumnName пустое или NULL, будет установлено значение «unknown». Чтобы создать условие логического И, используйте «&&» вместо «||» оператор.
ISNULL(ColumnName)||TRIM(ColumnName)==""?"Unknown": ColumnName
|
Возврат первых пяти символов почтового индекса. |
Производное преобразование столбца в потоке данных:
SUBSTRING(ZipCodePlus4,1,5)
|
Удалить данный символ из строки (например, удалить «-» из номера социального страхования) |
Производное преобразование столбца в потоке данных:
REPLACE(SocialSecurityNumber, "-","")
|
Данные в верхнем регистре |
Производное преобразование столбца в потоке данных:
UPPER(ColumnName)
|
Заменить NULL другим значением |
Производное преобразование столбца в потоке данных:
ISNULL(ColumnName)?"New Value" : ColumnName
|
Заменить пробелы значениями NULL |
Преобразование производного столбца в потоке данных:
TRIM(ColumnName)=="" ? (DT_STR, 4, 1252)NULL(DT_STR, 4, 1252) : ColumnName
|
Удалить из столбца все нечисловые данные |
Преобразование сценария в задаче потока данных с помощью следующего кода (VB 2008):
Imports System.Text.RegularExpressions
Public Overrides Sub Input()_ProcessInputRows(ByVal Row As Input()Buffer)
If Row.ColumnName_IsNull = False Or Row.ColumnName = "" Then
Dim pattern As String = String.Empty
Dim r As Regex = Nothing
pattern = "[^0-9]"
r = New Regex(pattern, RegexOptions.Compiled)
Row.ColumnName = Regex.Replace(Row.ColumnName, pattern, "")
End If
End Sub
|
Преобразовать текст в правильный регистр (например, первая буква в каждом слове - заглавная) |
Скрипт Transform со строкой частичного кода следующим образом:
Row.OutputName = StrConv(Row.InputName, VBStrConv.ProperCase)
|
Построить динамический оператор SQL |
Выражение свойства SQLStatementSource задачи «Выполнение SQL»:
"SELECT Column From " + @[User::TableName] +WHERE
DateFilterColumn = '" + (DT_WSTR,4)YEAR(@
[User::DateTimeVar]) + RIGHT("0" + (DT_WSTR,2)MONTH(@
[User::DateTimeVar]),2) + RIGHT("0" + (DT_WSTR,2)DAY(@
[User::DateTimeVar]),2) + "'"
|
Округлить до ближайшего двойного знака после запятой |
Выражение при преобразовании производного столбца:
ROUND(YourNumber, 2)
Expression Output Example: 1.2600000
|