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


Идентификаторы (службы 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