IEtlPlainDataCopy.RemoveLink

Синтаксис

RemoveLink(ProviderField: String; ConsumerField: String);

Параметры

ProviderField - идентификатор поля источника данных.

ConsumerField - идентификатор поля приемника данных.

Примечание. Значения параметров чувствительны к регистру. Идентификаторы полей должны указываться в верхнем регистре символов.

Описание

Метод RemoveLink удаляет связь между указанными полями источника и приемника данных.

Пример

В примере рассмотрено копирование данных из текстового файла в таблицу репозитория. Для выполнения примера предполагается наличие в репозитории задачи ETL с идентификатором «OBJ_ETL» и таблицы с идентификатором «OBJ_TBL». Также в файловой системе должен присутствовать текстовый файл «C:\ETL_imp.txt».

Первые 4 строки текстового файла, рассматриваемого в примере:

"Key","Country Name","Owner"

512,"Afghanistan",3

914,"Albania",1

612,"Algeria",

Поля таблицы, рассматриваемой в примере:

Sub Main;

Var

Mb: IMetabase;

Task: IEtlTask;

CopyObj: IEtlPlainDataCopy;

FProvider: IDtTextProvider;

Tab: IDatasetModel;

FConsumer: IDtMetabaseConsumer;

ProvFields, ConsFields: IDtFieldDefinitions;

i: Integer;

WxConsumer: IWxRectangle;

WxETLConsumer: IWxEtlObject;

Begin

Mb := MetabaseClass.Active;

Task := MB.ItemById("OBJ_ETL").Edit As IEtlTask;

// Создание объекта, копирующего данные

CopyObj := Task.Create(EtlObjectType.PlainDataCopy) As IEtlPlainDataCopy;

CopyObj := CopyObj.Edit;

// Настройка параметров источника данных

FProvider := New DtTextProvider.Create As IDtTextProvider;

FProvider.File := "C:\ETL_imp.txt";

FProvider.DelimitedColumnDelimiter := ",";

FProvider.HeaderRow := 1;

FProvider.FormatType := DtTextFormatType.Delimited;

FProvider.RangeHasHeader := True;

FProvider.RangeFirstRow := 1;

COpyObj.Provider := FProvider;

// Настройка параметров приемника данных

FConsumer := New DtMetabaseConsumer.Create;

Tab := MB.ItemById("OBJ_TBL").Edit As IDatasetModel;

FConsumer.Dataset := Tab;

CopyObj.Consumer := FConsumer;

// Привязка данных источника и приемника

ProvFields := FProvider.Fields;

ConsFields := FConsumer.Fields;

CopyObj.AutoLink;

For i := 0 To ProvFields.Count - 1 Do

If Not CopyObj.IsLinked(ProvFields.Item(i).Name, ConsFields.Item(i).Name) Then

CopyObj.AddLink(ProvFields.Item(i).Name, ConsFields.Item(i).Name);

End If;

End For;

//Удаление связи по полю "OWNER"

CopyObj.RemoveLink("OWNER", "OWNER");

// Очистка приемника данных

CopyObj.ClearConsumer := True;

//Обработка ошибок

CopyObj.ActionOnProblem := EtlActionOnProblem.DiscardRecordsInTransaction;

CopyObj.CommitCount := 10;

// Сохранение объекта, копирующего данные

CopyObj.Save;

//Начало создания визуального объекта

WxConsumer := Task.Workspace.CreateRectangle;

WxETLConsumer := New WxEtlObject.Create;

WxETLConsumer.EtlObject := CopyObj;

WxConsumer.Style.TextPosition := WxTextPosition.Bottom;

WxConsumer.Style.PictureMarginTop := -10;

WxConsumer.PinPosition := New GxPointF.Create(50, 50);

WxConsumer.Extension := WxETLConsumer As IWxShapeExtension;

//Конец создания визуального объекта

//Выполнение задачи

Task.Execute(Null);

//Сохранение объекта задачи ETL

(Task As IMetabaseObject).Save;

End Sub Main;

После выполнения примера в задаче ETL будет создан новый объект, осуществляющий копирование данных. Копирование будет осуществляться из текстового файла в таблицу репозитория. Поля источника и приемника будут связаны автоматически. Если какую-либо связь между полями приемника и источника данных не удастся установить автоматически, то она будет добавлена вручную. Связь по полю «OWNER» будет удалена. Таким образом копирование будет осуществляться только по полям «KEY» и «COUNTRY_NAME». Если при выполнении загрузки возникнут ошибки, то будут пропущены записи в рамках одной транзакции. За одну транзакцию будут обрабатываться 10 записей. После сохранения объекта копирования задача ETL будет запущена на выполнение.

См. также:

IEtlPlainDataCopy