Открыть сервис

Выражения SSIS

Выражения SSIS — это синтаксические конструкции, используемые в среде SQL Server Integration Services (SSIS) для динамического вычисления значений, преобразования данных и настройки свойств компонентов пакетов интеграции. Выражения представляют собой комбинацию литералов, переменных, функций, операторов и идентификаторов, результатом вычисления которой является значение определённого типа данных. Они являются ключевым инструментом для создания гибких, параметризованных и адаптируемых ETL-процессов (Extract, Transform, Load).

История и контекст

Выражения SSIS были введены вместе с платформой SQL Server Integration Services в составе Microsoft SQL Server 2005. До этого в SQL Server 2000 использовался компонент Data Transformation Services (DTS), где динамическое управление потоком данных было менее развито и часто требовало написания скриптов на VBScript. С появлением SSIS компания Microsoft предложила специализированный язык выражений, предназначенный для использования внутри пакетов. Этот язык не является полноценным языком программирования общего назначения, а представляет собой предметно-ориентированный язык (DSL), оптимизированный для задач интеграции данных. С каждой новой версией SQL Server (2008, 2012, 2016, 2019, 2022) язык выражений расширялся: добавлялись новые функции, улучшалась обработка дат и строк, а также повышалась производительность.

Области применения

Выражения SSIS используются в нескольких ключевых областях в рамках пакета SSIS:

Динамические свойства компонентов

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

Преобразование данных

В преобразованиях потока данных, таких как «Производный столбец» (Derived Column) и «Условное разделение» (Conditional Split), выражения используются для создания новых столбцов на основе вычислений над существующими данными или для маршрутизации строк в разные выходы в зависимости от выполнения логических условий.

Переменные и конфигурация

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

Задачи потока управления

Некоторые задачи, такие как «Задача «Выполнение SQL»» (Execute SQL Task) или «Задача «Обработка контейнера»» (Foreach Loop Container), поддерживают использование выражений для динамического формирования SQL-запросов, имен файлов или других параметров.

Синтаксис и компоненты

Язык выражений SSIS имеет строгий синтаксис, основанный на использовании символа @ для обозначения переменных и квадратных скобок [] для идентификаторов.

Литералы

Переменные

Переменные пакета обозначаются префиксом @. Системные переменные имеют префикс @[System::], пользовательские — @[User::]. Например:

Функции

SSIS предоставляет обширную библиотеку встроенных функций, разделённых на категории:

Операторы

Кастинг (приведение типов)

Явное приведение типов данных выполняется с помощью выражения в круглых скобках, например: (DT_WSTR, 10)@[User::Number] преобразует числовую переменную в строку длиной до 10 символов. Типы данных SSIS включают DT_I4 (32-битное целое), DT_R8 (число с плавающей точкой двойной точности), DT_DATE (дата), DT_BOOL (логическое), DT_WSTR (строковый Unicode) и другие.

Примеры выражений

Пример 1: Динамическое имя файла

Предположим, необходимо задать свойство ConnectionString для Flat File Connection Manager, чтобы имя файла содержало текущую дату: `` "C:\\Data\\Report_" + (DT_WSTR, 4) YEAR(GETDATE()) + "_" + RIGHT("0" + (DT_WSTR, 2) MONTH(GETDATE()), 2) + ".csv" ` Результат: C:\Data\Report_2024_01.csv`.

Пример 2: Преобразование данных

В преобразовании «Производный столбец» для создания нового столбца «ПолноеИмя»: `` UPPER(TRIM(Имя)) + " " + UPPER(TRIM(Фамилия)) ``

Пример 3: Условное разделение

Для направления строк в разные выходы в преобразовании «Условное разделение» можно использовать выражение: `` @[User::Threshold] > 100 && Сумма > @[User::Threshold] ``

Пример 4: Проверка на NULL

`` ISNULL(Колонка) ? 0 : Колонка ` Здесь используется тернарный оператор ? :`, который возвращает 0, если колонка равна NULL, иначе возвращает значение колонки.

Ограничения и особенности

Инструменты разработки

Выражения SSIS создаются и редактируются в среде SQL Server Data Tools (SSDT), которая является частью Visual Studio. Для каждого компонента, поддерживающего выражения, существует специальное окно «Свойства», где можно задать выражение для конкретного свойства. Кроме того, доступен «Построитель выражений» — графический интерфейс, позволяющий выбирать переменные, функции и операторы, а также проверять синтаксис в реальном времени.

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →