Published on

March 16, 2014

Создание условного потока данных в SQL Server

При работе с 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 и поможет вам создать свои собственные пакеты.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.