При работе с SQL Server Integration Services (SSIS) мастер импорта/экспорта является мощным инструментом для чтения файлов данных и загрузки их в таблицу назначения. Однако существуют сценарии, когда вам может понадобиться больше гибкости в направлении записей в разные таблицы на основе определенных условий или фильтрации определенных записей полностью. В таких случаях вы можете создать условную задачу потока данных вручную в SSIS.
В этой статье мы рассмотрим процесс создания пакета SSIS, который читает файл данных о продажах на фондовом рынке и направляет записи в разные таблицы на основе символа тикера и объема продаж. Давайте начнем!
Шаг 1: Создание таблиц SQL Server
Сначала нам нужно создать необходимые таблицы в SQL Server для хранения данных. Откройте окно запроса SQL Server Management Studio и выполните следующий SQL-код:
CREATE DATABASE DemoDB;
USE DemoDB;
CREATE TABLE [dbo].[S&P500](
[Date] [varchar](50) NULL,
[Ticker] [varchar](50) NULL,
[Open] [varchar](50) NULL,
[High] [varchar](50) NULL,
[Low] [varchar](50) NULL,
[Close] [varchar](50) NULL,
[Volume] [varchar](50) NULL
);
CREATE TABLE [dbo].[AMD](
[Date] [varchar](50) NULL,
[Ticker] [varchar](50) NULL,
[Open] [varchar](50) NULL,
[High] [varchar](50) NULL,
[Low] [varchar](50) NULL,
[Close] [varchar](50) NULL,
[Volume] [varchar](50) NULL
);
CREATE TABLE [dbo].[INTC](
[Date] [varchar](50) NULL,
[Ticker] [varchar](50) NULL,
[Open] [varchar](50) NULL,
[High] [varchar](50) NULL,
[Low] [varchar](50) NULL,
[Close] [varchar](50) NULL,
[Volume] [varchar](50) NULL
);
CREATE TABLE [dbo].[HighVolume](
[Date] [varchar](50) NULL,
[Ticker] [varchar](50) NULL,
[Open] [varchar](50) NULL,
[High] [varchar](50) NULL,
[Low] [varchar](50) NULL,
[Close] [varchar](50) NULL,
[Volume] [varchar](50) NULL
);
CREATE TABLE [dbo].[Leftovers](
[Date] [varchar](50) NULL,
[Ticker] [varchar](50) NULL,
[Open] [varchar](50) NULL,
[High] [varchar](50) NULL,
[Low] [varchar](50) NULL,
[Close] [varchar](50) NULL,
[Volume] [varchar](50) NULL
);
Этот SQL-код создает базу данных с именем DemoDB и добавляет в нее пять таблиц: S&P500, AMD, INTC, HighVolume и Leftovers.
Шаг 2: Сохранение и извлечение ресурсного файла
Затем загрузите прикрепленный ресурсный файл sp500hst.csv.zip и извлеките его в папку C:\demo_files\. В этом файле содержатся данные о продажах на фондовом рынке, с которыми мы будем работать.
Шаг 3: Создание пакета SSIS
Откройте проект SSIS в Business Intelligence Development Studio и создайте пустой пакет SSIS. Добавьте задачу потока данных в контейнер управления потоком.
Перейдите на вкладку потока данных и добавьте источник плоского файла в контейнер потока данных. Щелкните правой кнопкой мыши на контейнере менеджера подключений и выберите “Новое подключение к плоскому файлу” из списка всплывающего меню. Перейдите к файлу “C:\demo_files\sp500hst.csv”, добавьте имя менеджера подключений, затем определите столбцы.
Перетащите элемент многокопирования в контейнер потока данных. Подключите источник плоского файла к элементу многокопирования.
Добавьте назначение OLE DB в контейнер потока данных и подключите его к элементу многокопирования. Настройте назначение OLE DB для загрузки данных в таблицу S&P500.
Добавьте элемент условного разделения в контейнер потока данных и подключите его к элементу многокопирования. Настройте условное разделение для направления записей с символом тикера “AMD” в таблицу AMD, записей с символом тикера “INTC” в таблицу INTC и оставшихся записей в таблицу Leftovers.
Добавьте элемент преобразования данных в контейнер потока данных и подключите его к элементу многокопирования. Настройте преобразование данных для преобразования поля “Volume” в целочисленный тип данных.
Добавьте еще один элемент условного разделения в контейнер потока данных и подключите его к элементу преобразования данных. Настройте это условное разделение для выбора записей с объемом больше или равным 1 000 000.
Наконец, добавьте назначение OLE DB в контейнер потока данных и подключите его к условному разделению. Настройте это назначение для загрузки данных в таблицу HighVolume.
Шаг 4: Выполнение пакета SSIS
Нажмите кнопку “Начать отладку”, чтобы выполнить завершенный пакет SSIS. Пакет будет читать файл данных о продажах на фондовом рынке, применять условную логику и направлять записи в соответствующие таблицы.
Вы можете выполнить запрос к таблицам в SQL Server, чтобы подтвердить количество записей, сообщаемое пакетом SSIS.
Заключение
В этой статье мы узнали, как создать условный поток данных в SQL Server с использованием SSIS. Путем ручной настройки задач и преобразований потока данных мы можем направлять записи в разные таблицы на основе определенных условий и фильтровать нежелательные записи. Этот уровень гибкости позволяет нам эффективно обрабатывать сложные сценарии интеграции данных.
Если вы новичок в SSIS и хотите узнать больше, вам может быть полезна наша лестница к Integration Services. Она предназначена для руководства вас через основы SSIS и поможет вам создать свои собственные пакеты.