Поделиться через


Идентификаторы (Выражения служб SSIS)

В выражениях идентификаторы обозначают столбцы и переменные, значения которых могут быть использованы в операциях. Выражения могут использовать обычные и сложные идентификаторы. Обычный идентификатор — это идентификатор, который не требует дополнительных квалификаторов. Например MiddleName, столбец из таблицы Contacts базы данных AdventureWorks, — это пример обычного идентификатора. Сложные идентификаторы — это идентификаторы, имена которых заключены в квадратные скобки. Для идентификатора может потребоваться разделитель, потому что либо имя идентификатора содержит пробелы, либо имя идентификатора начинается не с буквы или символа подчеркивания. Например, имя столбца Middle Name при использовании в выражении должно быть записано как [Middle Name].

Пакет может включать в себя несколько источников данных, которые содержат столбец с одним и тем же именем. Для разрешения неоднозначности при обращении к столбцу средство оценки выражений поддерживает точечную нотацию, которая позволяет уточнить имя столбца именем источника данных. Например, если имя источника — GetGeographyData, а имя столбца — GeographyKey, на столбец можно ссылаться с помощью выражения GetGeographyData.GeographyKey.

Пакет может иметь множество переменных с одним и тем же именем, если переменные принадлежат различным пространствам имен. Для уточнения пространства имен, к которому относится переменная, используется специальный оператор. Дополнительные сведения см. в разделе Синтаксис (службы SSIS).

Обычные идентификаторы

Имена обычных идентификаторов должны соответствовать следующим правилам.

  • Первый символ имени, по определению стандарта Юникод 2.0, должен быть буквой или символом подчеркивания (_).

  • Последующие символы могут быть буквами или числами по определению стандарта Юникод 2.0, символами подчеркивания (_), знаками @, $, и #.

Важное примечаниеВажно!

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

Сложные идентификаторы

Если имя идентификатора содержит пробелы или имя не является допустимым для имени обычного идентификатора, то такой идентификатор должен быть уточнен. Для определения идентификаторов средство оценки выражений использует квадратные скобки ([]). Скобки ставятся перед первым и сразу после последнего символа идентификатора. Например идентификатор 5$> преобразуется в [5$>]. Скобки могут быть использованы с именами столбцов, именами переменных и именами функций.

Если выражение строится с помощью диалогового окна конструктора SSIS, то даже обычные идентификаторы автоматически заключаются в квадратные скобки. Тем не менее, квадратные скобки необходимы, только если имя содержит недопустимые символы. Например, для столбца с именем MiddleName квадратные скобки не требуются.

Нельзя использовать в выражении имена столбцов, которые уже содержат квадратные скобки в своем имени. Например, столбец с именем Column[1] не может быть использован в выражении. Чтобы использовать такой столбец в выражении, его необходимо переименовать без использования квадратных скобок.

Идентификаторы журнала обращений и преобразований

Чтобы обращаться к столбцам, в выражениях могут быть использованы идентификаторы журнала обращений и преобразований. Идентификаторы журнала обращений и преобразований назначаются автоматически во время создания пакета. Идентификаторы журнала обращений и преобразований можно просмотреть на вкладке Свойства столбца диалогового окна Расширенный редактор конструктора служб SSIS.

Если ссылка на столбец происходит с помощью идентификатора журнала обращений и преобразований, необходимо использовать префикс (#) перед именем идентификатора. Например, столбец с идентификатором журнала обращений и преобразований 147 должен быть записан в выражении как #147.

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

Уникальные имена столбцов

Многие компоненты, используемые в пакетах, могут содержать столбцы с одинаковыми именами. Если эти столбцы используются в выражениях, необходимо устранить неоднозначность в именовании столбцов для успешного синтаксического анализа. Средство оценки выражений поддерживает точечную нотацию для уточнения исходного объекта, содержащего столбец. Например, двум столбцам с именем Age присваиваются имена FlatFileSource.Age и OLEDBSource.Age, это означает, что они относятся к источникам FlatFileSource и OLEDBSource. Синтаксический анализатор рассматривает такие уточненные имена как обычные имена столбцов.

Компоненты и столбцы квалифицируются независимо. Следующий пример показывает правильное использование квадратных скобок в точечной нотации.

  • Имя компонента источника содержит пробелы.

    [MySo urce].Age
    
  • Первый символ столбца не относится к числу допустимых.

    MySource.[#Age]
    
  • И имя компонента источника, и имя столбца содержат недопустимые символы.

    [MySource?].[#Age]
    
Важное примечаниеВажно!

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

Переменные в выражениях

При использовании переменных в выражениях, необходимо использовать префикс @ перед именем переменной. Например, выражение @Counter является ссылкой на переменную Counter. Символ @ не является частью имени переменной. Он только указывает средству оценки выражений на принадлежность объекта к переменным. Если выражение построено в диалоговом окне конструктора служб SSIS, то символ @ будет автоматически добавлен к имени переменной. Между символом @ и именем переменной не должно быть пробелов.

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

  • Первый символ имени, по определению стандарта Юникод 2.0, должен быть буквой или символом подчеркивания (_).

  • Последующие символы могут быть буквами или числами по определению стандарта Юникод 2.0, символами подчеркивания (_), знаками @, $, и #.

Если имя переменной содержит символ, не разрешенный этими правилами, переменная должна быть заключена в квадратные скобки. Например, имя переменной, содержащее пробел, должно быть заключено в квадратные скобки. Перед открывающей скобкой должен стоять символ @. Например, для ссылки на переменную My Name используется запись @[My Name]. Между символом @ и открывающей скобкой не должно быть пробелов.

ПримечаниеПримечание

Имена пользовательских и системных переменных чувствительны к регистру.

Уникальные имена переменных

Службы Integration Services поддерживают пользовательские переменные и предоставляют набор системных переменных. По умолчанию пользовательские переменные принадлежат к пространству имен User, а системные переменные — к пространству имен System. Можно создать дополнительные пространства имен для пользовательских переменных и изменить имена существующих пространств имен, чтобы они лучше соответствовали требованиям приложения. Построитель выражений поддерживает списки всех переменных для всех пространств имен.

Все переменные имеют область и принадлежат какому-нибудь пространству имен. Переменные могут иметь области пакета или контейнера либо задачи в пакете. Построитель выражений в конструкторе служб SSIS поддерживает только список переменных, принадлежащих к области. Дополнительные сведения см. в разделах Переменные служб Integration Services и Использование переменных в пакетах.

Переменные, используемые в выражениях, должны иметь уникальные имена для их корректной оценки средством оценки выражений. Если пакет использует несколько переменных с одинаковым именем, то их пространства имен должны различаться. Службы Integration Services поддерживают оператор разрешения пространства имен, состоящий из пары двоеточий (::) для уточнения пространства имен. Например, в следующем выражении используются две переменные с именем Count. Одна принадлежит пространству имен User, а другая — пространству имен MyNamespace.

@[User::Count] > @[MyNamespace::Count]
Важное примечаниеВажно!

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

Если значение переменной Count в пространстве имен User равно 10, а значение переменной Count из пространства MyNamespace равно 2, то выражение примет значение true, потому что средство оценки выражений правильно распознает две различные переменные.

Если имена переменных неуникальны, ошибки не возникнет. Вместо этого средство оценки выражений будет использовать только один экземпляр переменной для вычисления выражения, и результат выражения будет неверным. Например, следующее выражение необходимо для сравнения значений (10 и 2) для двух разных переменных Count, но выражение принимает значение false, потому что средство оценки выражений использует один экземпляр переменной Count дважды.

@Count > @Count