Идентификаторы (службы SSIS)
Область применения: среда выполнения интеграции SSIS SQL Server в Фабрика данных Azure
В выражениях идентификаторы обозначают столбцы и переменные, значения которых могут быть использованы в операциях. Выражения могут использовать обычные и сложные идентификаторы.
Обычные идентификаторы
Обычный идентификатор — это идентификатор, который не требует дополнительных квалификаторов. Например MiddleName, столбец из таблицы Contacts базы данных AdventureWorks , — это пример обычного идентификатора.
Имена обычных идентификаторов должны соответствовать следующим правилам.
Первый символ имени, по определению стандарта Юникод 2.0, должен быть буквой или символом подчеркивания (_).
Последующие символы могут быть буквами или числами по определению стандарта Юникод 2.0, символами подчеркивания (_), знаками @, $, и #.
Внимание
Внутренние пробелы и прочие символы, не входящие в приведенный список, не должны использоваться в обычных идентификаторах. Для использования пробелов и других специальных символов нужно использовать сложные идентификаторы.
Сложные идентификаторы
Сложные идентификаторы — это идентификаторы, имена которых заключены в квадратные скобки. Для идентификатора может потребоваться разделитель, потому что либо имя идентификатора содержит пробелы, либо имя идентификатора начинается не с буквы или символа подчеркивания. Например, имя столбца Middle Name при использовании в выражении должно быть записано как [Middle Name].
Если имя идентификатора содержит пробелы или имя не является допустимым для имени обычного идентификатора, то такой идентификатор должен быть уточнен. Для определения идентификаторов средство оценки выражений использует квадратные скобки ([]). Скобки ставятся перед первым и сразу после последнего символа идентификатора. Например, идентификатор 5$> преобразуется в [5$>]. Скобки могут быть использованы с именами столбцов, именами переменных и именами функций.
Если вы строите выражение с помощью диалогового окна конструктора Integration Services (SSIS), то даже обычные идентификаторы автоматически берутся в квадратные скобки. Тем не менее, квадратные скобки необходимы, только если имя содержит недопустимые символы. Например, для столбца с именем MiddleName квадратные скобки не требуются.
Нельзя использовать в выражении имена столбцов, которые уже содержат квадратные скобки в своем имени. Например, столбец с именем Column[1] не может быть использован в выражении. Чтобы использовать такой столбец в выражении, его необходимо переименовать без использования квадратных скобок.
идентификаторы журнала обращений и преобразований
Чтобы обращаться к столбцам, в выражениях могут быть использованы идентификаторы журнала обращений и преобразований. Идентификаторы журнала обращений и преобразований назначаются автоматически во время создания пакета. Идентификаторы журнала обращений и преобразований можно просмотреть на вкладке Свойства столбца диалогового окна Расширенный редактор конструктора Integration Services.
Если ссылка на столбец происходит с помощью идентификатора журнала обращений и преобразований, необходимо использовать префикс (#) перед именем идентификатора. Например, столбец с идентификатором журнала обращений и преобразований 147 должен быть записан в выражении как #147.
При успешном синтаксическом анализе выражения средство оценки выражений заменяет идентификаторы журнала обращений и преобразований именами столбцов в диалоговом окне.
Уникальные имена столбцов
Многие компоненты, используемые в пакетах, могут содержать столбцы с одинаковыми именами. Если эти столбцы используются в выражениях, необходимо устранить неоднозначность в именовании столбцов для успешного синтаксического анализа. Средство оценки выражений поддерживает точечную нотацию для уточнения исходного объекта, содержащего столбец. Например, двум столбцам с именем Age присваиваются имена FlatFileSource.Age и OLEDBSource.Age, это означает, что они относятся к источникам FlatFileSource и OLEDBSource. Синтаксический анализатор рассматривает такие уточненные имена как обычные имена столбцов.
Компоненты и столбцы квалифицируются независимо. Следующий пример показывает правильное использование квадратных скобок в точечной нотации.
Имя компонента источника содержит пробелы.
[MySo urce].Age
Первый символ столбца не относится к числу допустимых.
MySource.[#Age]
И имя компонента источника, и имя столбца содержат недопустимые символы.
[MySource?].[#Age]
Внимание
Если оба элемента в точечной нотации окружены одной парой скобок, то средство оценки выражения воспримет точку как часть сложного имени, а не как оператор уточнения.
Переменные в выражениях
При использовании переменных в выражениях, необходимо использовать префикс @ перед именем переменной. Например, выражение @Counter является ссылкой на переменную Counter . Символ @ не является частью имени переменной. Он только указывает средству оценки выражений на принадлежность объекта к переменным. Если вы строите выражение в диалоговом окне конструктора Integration Services, символ @ будет автоматически добавлен к имени переменной. Между символом @ и именем переменной не должно быть пробелов.
Имена переменных должны удовлетворять тем же самым правилам, что и имена других обычных идентификаторов.
Первый символ имени, по определению стандарта Юникод 2.0, должен быть буквой или символом подчеркивания (_).
Последующие символы могут быть буквами или числами по определению стандарта Юникод 2.0, символами подчеркивания (_), знаками @, $, и #.
Если имя переменной содержит символ, не разрешенный этими правилами, переменная должна быть заключена в квадратные скобки. Например, имя переменной, содержащее пробел, должно быть заключено в квадратные скобки. Перед открывающей скобкой должен стоять символ @. Например, для ссылки на переменную My Name используется запись @[My Name]. Между символом @ и открывающей скобкой не должно быть пробелов.
Примечание.
Имена пользовательских и системных переменных обрабатываются с учетом регистра.
Уникальные имена переменных
Служба Integration Services поддерживает пользовательские переменные и предоставляет набор системных переменных. По умолчанию пользовательские переменные принадлежат к пространству имен User , а системные переменные — к пространству имен System . Можно создать дополнительные пространства имен для пользовательских переменных и изменить имена существующих пространств имен, чтобы они лучше соответствовали требованиям приложения. Построитель выражений поддерживает списки всех переменных для всех пространств имен.
Все переменные имеют область и принадлежат какому-нибудь пространству имен. Переменные могут иметь области пакета или контейнера либо задачи в пакете. Построитель выражений в конструкторе Integration Services поддерживает только список переменных, принадлежащих к области. Дополнительные сведения см. в статье Переменные в службах Integration Services (SSIS) и разделе об использовании переменных в пакетах.
Переменные, используемые в выражениях, должны иметь уникальные имена для их верной оценки средством оценки выражений. Если в пакете используется несколько переменных с одним и тем же именем, их пространства имен должны быть разными. Служба Integration Services предоставляет оператор разрешения пространства имен, состоящий из двух двоеточий (::); он предназначен для уточнения пространства имен переменной. Например, в следующем выражении используются две переменные с именем Count. Одна принадлежит к пространству имен User , а другая — к пространству имен MyNamespace .
@[User::Count] > @[MyNamespace::Count]
Внимание
Сочетание пространства имен и уточненного имени переменной необходимо заключить в квадратные скобки, чтобы средство оценки выражений смогло распознать переменную.
Если значение переменной Count в пространстве имен User равно 10, а значение переменной Count из пространства MyNamespace равно 2, то выражение принимает значение true , поскольку средство оценки выражений правильно распознает две различные переменные.
Если имена переменных неуникальны, ошибки не возникнет. Вместо этого средство оценки выражений будет использовать только один экземпляр переменной для вычисления выражения, и результат выражения будет неверным. Например, следующее выражение необходимо для сравнения значений (10 и 2) для двух разных переменных Count , но выражение принимает значение false , потому что средство оценки выражений использует один экземпляр переменной Count дважды.
@Count > @Count
См. также
Техническая статья Памятка выражений служб SSISна сайте pragmaticworks.com