Задача «Поток данных»
Изменения: 17 июля 2006 г.
В состав задачи «Поток данных» входит подсистема обработки потока данных, перемещающая данные между источником и назначением и позволяющая пользователю преобразовывать, очищать и изменять данные в процессе перемещения. Добавление задачи «Поток данных» в поток управления пакета позволяет пакету извлекать, преобразовывать и загружать данные.
Поток данных состоит по крайней мере из одного компонента потока данных, но обычно является набором связанных компонентов потока данных: источники извлекают данные; преобразования изменяют, маршрутизируют или суммируют данные; назначения загружают данные. Компоненты связаны в потоке данных путями. Каждый путь связывает два компонента, являющиеся началом и концом пути. Дополнительные сведения см. в разделе Элементы потока данных.
Во время выполнения задача «Поток данных» создает план выполнения в соответствии с потоком данных, а подсистема обработки потока данных выполняет этот план. Возможно создание задачи «Поток данных», не содержащей потока данных, но задача будет выполнена, только если она включает по меньшей мере один поток данных.
На следующей диаграмме показана задача «Поток данных» с одним потоком данных.
Задача «Поток данных» может включать несколько потоков данных. Если задача копирует несколько наборов данных и порядок, в котором производится копирование, неважен, может оказаться полезным включить в задачу «Поток данных» несколько потоков данных. Например, можно включить пять потоков данных, каждый из которых копирует данные из плоского файла в другую таблицу измерения хранилища данных со схемой «звезда».
Однако, если имеется несколько потоков данных в пределах одной задачи «Поток данных», порядок выполнения определяется подсистемой обработки потока данных. Таким образом, если порядок важен, пакет должен использовать несколько задач «Поток данных», каждая из которых содержит один поток данных. При этом можно будет задать ограничение очередностью для управления порядком выполнения задач.
На следующей диаграмме показана задача «Поток данных» с несколькими потоками данных.
Пакет может включать несколько задач «Поток данных», так как это очень свойственно сложным пакетам. Например, если пакет требует, чтобы потоки данных были запущены в указанной последовательности или чтобы между потоками данных были выполнены другие задачи, необходимо указывать отдельную задачу «Поток данных» для каждого потока данных.
Задача «Поток данных» управляет также и потоками ошибок. Во время выполнения могут возникать ошибки на уровне строк при преобразовании данных, выполнении уточняющего запроса или вычислении выражений компонентами потока данных. Например, столбец данных, содержащий строковое значение, не удалось преобразовать в целое число, либо в выражении была попытка деления на ноль. Обе операции вызывают ошибки, и строки, содержащие ошибки, можно обработать отдельно при помощи потока ошибок. Дополнительные сведения об использовании потоков ошибок в потоке данных пакета см. в разделе Обработка ошибок в данных.
Чтобы выполнить массовую вставку из текстовых файлов в базу данных SQL Server вместо задачи «Поток данных» и самого потока данных можно использовать задачу «Массовая вставка». Однако задача «Массовая вставка» не может преобразовывать данные. Дополнительные сведения см. в разделе Задача «Массовая вставка».
Использование выражений свойств с элементами потока данных
Некоторые из компонентов потоков данных — источники, фильтры и цели — поддерживают использование выражений с некоторыми своими свойствами. Выражение свойств — это выражение, которое заменяет значение свойства при загрузке пакета. Во время выполнения пакет будет использовать обновленные значения свойств. Выражения строятся с использованием синтаксиса выражений служб Integration Services и могут включать функции служб Integration Services, операторы, идентификаторы и переменные. Дополнительные сведения см. в разделах Справочник выражений служб Integration Services, Использование выражений в пакетах и Использование выражений свойств в пакетах.
При построении пакета в среде Business Intelligence Development Studio свойства компонентов потоков данных, которые поддерживают выражения свойств, публикуются в задаче «Поток данных», которой они принадлежат. Чтобы добавить, изменить или удалить выражения свойств из компонентов потока данных, щелкните задачу «Поток данных» и в окне «Свойства» или в редакторе задачи добавьте, измените или удалите выражения свойств. Выражения свойств для задачи «Поток данных» можно добавлять, изменять или удалять в окне «Свойства».
Если в потоке данных содержатся компоненты, использующие выражения свойств, эти выражения также отображаются в окне «Свойства». Для просмотра выражений выберите задачу «Поток данных», которой принадлежат компоненты. Свойства можно просматривать по категориям или в алфавитном порядке. Если в окне «Свойства» отображается представление по категориям, все выражения, не использующиеся в конкретном свойстве, приводятся в списке категории Прочие. Если выражения представлены в алфавитном порядке, они отображаются по имени компонента потока данных.
Записи журнала
Службы Integration Services предоставляют журнальные события, которые доступны всем задачам. Для многих задач службы Integration Services предоставляют также пользовательские записи журнала. Дополнительные сведения см. в разделах Реализация ведения журналов в пакетах и Пользовательские сообщения для ведения журнала. Задача «Поток данных» содержит следующие пользовательские записи журнала.
Запись журнала | Описание |
---|---|
BufferSizeTuning |
Указывает, что задача «Поток данных» изменила размер буфера. Эта запись журнала описывает причины изменения размера и фиксирует новый временный размер буфера. |
OnPipelinePostEndOfRowset |
Означает, что компонент получил сигнал конца набора строк, который устанавливается при последнем вызове метода ProcessInput. Запись делается для каждого компонента в потоке данных, который обрабатывает ввод. Запись включает имя компонента. |
OnPipelinePostPrimeOutput |
Указывает, что компонент завершил последний вызов метода PrimeOutput. В зависимости от потока данных, возможно формирование нескольких записей в журнале. Если компонент является источником, эта запись журнала означает, что компонент завершил обработку строк. |
OnPipelinePreEndOfRowset |
Показывает, что компонент уже готов получить сигнал конца набора строк, который устанавливается при последнем вызове метода ProcessInput. Запись делается для каждого компонента в потоке данных, который обрабатывает ввод. Запись включает имя компонента. |
OnPipelinePrePrimeOutput |
Показывает, что компонент готов получить свой вызов из метода PrimeOutput. В зависимости от потока данных, возможно формирование нескольких записей в журнале. |
OnPipelineRowsSent |
Сообщает количество строк, предоставленных входу компонента с помощью вызова метода ProcessInput. Запись журнала включает имя компонента. |
PipelineBufferLeak |
Предоставляет сведения обо всех компонентах, которые удерживают буферы от уничтожения после того, как диспетчер буферов завершил свое выполнение. Если буфер все еще существует, ресурсы буферов не освобождаются и могут вызвать утечку памяти. Запись журнала предоставляет имя компонента и идентификатор буфера. |
PipelineExecutionPlan |
Сообщает о плане выполнения потока данных. План выполнения предоставляет сведения о том, как буферы будут отсылаться компонентам. Эти сведения в сочетании с записью журнала PipelineExecutionTrees описывают работу задачи «Поток данных». |
PipelineExecutionTrees |
Сообщает о дереве выполнения макета в потоке данных. Диспетчер ядра подсистемы обработки потока данных использует деревья для построения плана выполнения потока данных. |
PipelineInitialization |
Предоставляет сведения об инициализации задачи. Эти сведения включают каталоги, используемые для временного хранения данных большого объема типа BLOB, размер буфера по умолчанию и количество строк в буфере. В зависимости от настройки задачи «Поток данных», возможно формирование нескольких записей в журнале. |
Эти записи журнала предоставляют достаточные сведения об исполнении задачи «Поток данных» при каждом запуске пакета. Если пакеты запускаются периодически, то можно получить сведения, которые со временем предоставят важные данные предыстории о выполнении задачи, о вопросах, влияющих на производительность, и об объемах обрабатываемых задачей данных.
Образцы сообщений от задачи «Поток данных»
В следующей таблице приведен список образцов сообщений для записей журнала в очень простом пакете. Пакет использует источник данных «OLE DB» для извлечения данных из таблицы, преобразование «Сортировка» для сортировки данных и назначение «OLE DB» для записи данных в другую таблицу.
Запись журнала | Сообщения |
---|---|
BufferSizeTuning |
Строки в буфере 0-го типа могут привести к тому, что размер буфера станет больше заданного максимума. В буфере такого типа может быть только 9637 строк. Строки в буфере 2-го типа могут привести к тому, что размер буфера станет больше заданного максимума. В буфере такого типа может быть только 9497 строк. Строки в буфере 3-го типа могут привести к тому, что размер буфера станет больше заданного максимума. В буфере такого типа может быть только 9497 строк. |
OnPipelinePostEndOfRowset |
Компонент получит сигнал об окончании набора строк. : 1180 : Сортировка: 1181 : Вход сортировки Компонент получит сигнал об окончании набора строк. : 1291 : Назначение «OLE DB»: 1304 : Вход назначения «OLE DB» |
OnPipelinePostPrimeOutput |
Компонент завершил вызов PrimeOutput. : 1180 : Сортировка Компонент завершил вызов PrimeOutput. : 1 : Источник «OLE DB» |
OnPipelinePreEndOfRowset |
Компонент завершил обработку всех своих строк. : 1180 : Сортировка: 1181 : Вход сортировки Компонент завершил обработку всех своих строк. : 1291 : Назначение «OLE DB»: 1304 : Вход назначения «OLE DB» |
OnPipelinePrePrimeOutput |
PrimeOutput будет вызван в компоненте. : 1180 : Сортировка PrimeOutput будет вызван в компоненте. : 1 : Источник «OLE DB» |
OnPipelineRowsSent |
В качестве входных данных компоненту потока данных были предоставлены строки. : : 1185 : Выходные данные источника «OLE DB»: 1180 : Сортировка: 1181 : Вход сортировки: 76 В качестве входных данных компоненту потока данных были предоставлены строки. : : 1308 : Выход сортировки: 1291 : Назначение «OLE DB»: 1304 : Вход назначения «OLE DB»: 76 |
PipelineExecutionPlan |
SourceThread0 Управление: 1 Влияния: 1180 1291 Выходной список операций CreatePrimeBuffer первого типа для выходных данных с идентификатором ID 11. SetBufferListener: «WorkThread0» для входных данных с идентификатором ID 1181 CreatePrimeBuffer третьего типа для выходных данных с идентификатором ID 12. CallPrimeOutput для компонента «Источник OLE DB» (1) Конец выходного списка операций Завершение SourceThread0 WorkThread0 Управление: 1180 Влияния: 1180 1291 Список действий над входными данными, входные данные с идентификатором ID 1181 (Ожидается 1 EOR (конец набора строк)) CallProcessInput для входных данных с идентификатором ID 1181 для компонента «Сортировка» (1180) для представления типа 2 Завершающий список действий над входными данными для входных данных 1181 Выходной список операций CreatePrimeBuffer четвертого типа для выходных данных с идентификатором ID 1182. SetBufferListener: «WorkThread1» для входных данных с идентификатором ID 1304 CallPrimeOutput для компонента «Сортировка» (1180) Конец выходного списка операций Завершение WorkThread0 WorkThread1 Управление: 1291 Влияния: 1291 Список действий над входными данными, входные данные с идентификатором ID 1304 (Ожидается 1 EOR (конец набора строк)) CallProcessInput для входных данный с идентификатором ID 1304 для компонента «Назначение OLE DB» (1291) для представления типа 5 Завершающий список действий над входными данными для входных данных 1304 Выходной список операций Конец выходного списка операций Завершение WorkThread1 |
PipelineExecutionTrees |
Начало выполнения дерева 0 Выходные данные «Выход источника OLE DB» (11) Входные данные «Вход сортировки» (1181) Завершение выполнения дерева 0 Начало выполнения дерева 1 Выходные данные «Ошибочные выходные данные источника OLE DB» (12) Завершение выполнения дерева 1 Начало выполнения дерева 2 Выходные данные «Выход сортировки» (1182) Входные данные «Вход назначения OLE DB» (1304) Выходные данные «Ошибочные выходные данные назначения OLE DB» (1305) Завершение выполнения дерева 2 |
PipelineInitialization |
Не было предоставлено место хранения временных данных типа BLOB. Диспетчер буферов будет предполагать, что эти каталоги размещения временных данных указаны в переменных среды TEMP или TMP. Размер буфера по умолчанию равен 10 485 760 байт. По умолчанию буферы предназначены для хранения 10000 строк. Поток данных не удаляет неиспользуемые компоненты, так как его свойство RunInOptimizedMode установлено в значение false. |
Многие регистрируемые события оставляют по нескольку записей, а сообщения для некоторых записей журнала содержат сложные данные. Чтобы упростить понимание и взаимодействие содержимого сложных сообщений, можно провести синтаксический анализ текста сообщения. В зависимости от положения журналов можно использовать инструкции Transact-SQL или компонент «Сценарий» для разделения сложного текста по столбцам или преобразования в другие форматы, которые окажутся более удобными.
Например, следующая таблица содержит сообщение «В качестве входных данных компоненту потока данных были предоставлены строки. : : 1185 : Выходные данные источника «OLE DB»: 1180 : Сортировка: 1181 : Вход сортировки: 76», разделенное на столбцы. Сообщение записано событием OnPipelineRowsSent, когда строки были отправлены из источника «OLE DB» в преобразование «Сортировка».
Столбец | Описание | Значение |
---|---|---|
PathID |
Значение свойства ID пути между источником «OLE DB» и преобразованием «Сортировка». |
1185 |
PathName |
Значение свойства Name пути. |
Выход источника «OLE DB» |
ComponentID |
Значение свойства ID преобразования «Сортировка». |
1180 |
ComponentName |
Значение свойства Name преобразования «Сортировка». |
Сортировка |
InputID |
Значение свойства ID входных данных для преобразования «Сортировка». |
1181 |
InputName |
Значение свойства Name входных данных для преобразования «Сортировка». |
Вход сортировки |
RowsSent |
Количество строк, посланных в качестве входных данных на преобразование «Сортировка». |
76 |
Источники
Следующие источники имеют свойства, которые могут обновляться через выражения свойств.
Дополнительные сведения см. в разделе Source Custom Properties.
Преобразования
Следующие преобразования имеют свойства, которые могут обновляться через выражения свойств.
- Преобразование «Условное разбиение»
- Преобразование «Производный столбец»
- Преобразование «Нечеткое группирование»
- Преобразование «Нечеткий уточняющий запрос»
- Преобразование «Команда OLE DB»
- Преобразование «Процентная выборка»
- Преобразование «Сведение»
- Преобразование «Выборка строк»
- Преобразование «Сортировка»
- Преобразование «Отмена сведения»
Дополнительные сведения см. в разделе Transformation Custom Properties.
Назначения
Следующие назначения обладают свойствами, которые могут обновляться через выражения свойств.
Дополнительные сведения см. в разделе Destination Custom Properties.
Настройка задачи «Поток данных»
Задать свойства можно в окне Свойства или программно.
Дополнительные сведения о настройке этих свойств в окне Свойства см. в следующем разделе:
Программная настройка задачи «Поток данных»
Дополнительные сведения о программном добавлении задачи «Поток данных» к пакету и установке свойств потока данных, см. в следующем разделе:
См. также
Основные понятия
Задачи служб Integration Services
Создание пакета потока управления
Создание потока данных пакета
Другие ресурсы
Adding the Data Flow Task Programmatically
Справка и поддержка
Получение помощи по SQL Server 2005
Журнал изменений
Версия | Журнал |
---|---|
17 июля 2006 г. |
|
14 апреля 2006 г. |
|
5 декабря 2005 г. |
|