IEtlPlainDataCopy.EventId

Синтаксис Fore

EventId: String;

Синтаксис Fore.NET

EventId: string;

Описание

Свойство EventId определяет идентификатор события, которое будет вызвано при возникновении ошибки выполнения задачи ETL.

Комментарии

Для определения способа обработки ошибок, которые могут возникнуть при загрузке данных, используйте свойство IEtlPlainDataCopy.ActionOnProblem.

Пример Fore

Для выполнения примера предполагается наличие:

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

512,"Afghanistan",3

914,"Albania",1

612,"Algeria",2

Добавьте ссылки на системные сборки Metabase, Etl, Dt, Db, Andy, Drawing.

Sub UserProc;
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("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("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;
     // Очистка приёмника данных
    CopyObj.ClearConsumer := True;
     // Обработка ошибок
    CopyObj.ActionOnProblem := EtlActionOnProblem.DiscardRecordsInTransaction;
    CopyObj.SaveInvalidRecs := True;
    CopyObj.InvalidRecsFileName := "Errors";

    CopyObj.UseStopLimit := True;
    CopyObj.StopLimit := 2;
    CopyObj.CommitCount := 10;
    CopyObj.EventId := "CUSTOM_EVENT";
     // Сохранение объекта, копирующего данные
    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(5050);
    WxConsumer.Extension := WxETLConsumer As IWxShapeExtension;
     // Сохранение объекта задачи ETL
    (Task As IMetabaseObject).Save;
End Sub UserProc;

В результате выполнения примера в задаче ETL будет создан новый объект, осуществляющий копирование данных. Копирование будет осуществляться из текстового файла в таблицу репозитория. Для объекта «Копирование данных» будут заданы настройки:

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Etl;
Imports Prognoz.Platform.Interop.Dt;
Imports Prognoz.Platform.Interop.Db;
Imports Prognoz.Platform.Interop.Andy;
Imports Prognoz.Platform.Interop.Drawing;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    Task: IEtlTask;
    CopyObj: IEtlPlainDataCopy;
    FProvider: IDtTextProvider;
    Tab: IDatasetModel;

    FConsumer: IDtMetabaseConsumer;
    ProvFields, ConsFields: IDtFieldDefinitions;
    i: Integer;
    WxConsumer: IWxRectangle;
    WxETLConsumer: IWxEtlObject;
    OutPoint: GxPointF = New GxPointFClass();
Begin
    MB := Params.Metabase;
    Task := MB.ItemById["ETL"].Edit() As IEtlTask;
     // Создание объекта, копирующего данные
    CopyObj := Task.Create(EtlObjectType.eotPlainDataCopy) As IEtlPlainDataCopy;
    CopyObj := CopyObj.Edit();
     // Настройка параметров источника данных
    FProvider := New DtTextProvider.Create() As IDtTextProvider;

    FProvider.File := "C:\temp\ETL_imp.txt";
    FProvider.DelimitedColumnDelimiter := ",";
    FProvider.HeaderRow := 1;
    FProvider.FormatType := DtTextFormatType.tftDelimited;
    FProvider.RangeHasHeader := True;
    FProvider.RangeFirstRow := 1;
    COpyObj.Provider := FProvider;
     // Настройка параметров приёмника данных
    FConsumer := New DtMetabaseConsumer.Create();
    Tab := MB.ItemById["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;
     // Очистка приёмника данных
    CopyObj.ClearConsumer := True;
     // Обработка ошибок
    CopyObj.ActionOnProblem := EtlActionOnProblem.aopDiscardRecordsInTransaction;
    CopyObj.SaveInvalidRecs := True;
    CopyObj.InvalidRecsFileName := "Errors";
    CopyObj.UseStopLimit := True;

    CopyObj.StopLimit := 2;
    CopyObj.CommitCount := 10;
    CopyObj.EventId := "CUSTOM_EVENT";
     // Сохранение объекта, копирующего данные
    CopyObj.Save();
     // Создание визуального объекта
    WxConsumer := Task.Workspace.CreateRectangle();
    WxETLConsumer := New WxEtlObject.Create();
    WxETLConsumer.EtlObject := CopyObj;

    WxConsumer.Style.TextPosition := WxTextPosition.wtpBottom;
    WxConsumer.Style.PictureMarginTop := -10;
    OutPoint := WxConsumer.PinPosition;
    OutPoint.Create(5050);
    WxConsumer.Extension := WxETLConsumer As IWxShapeExtension;
     // Сохранение объекта задачи ETL
    (Task As IMetabaseObject).Save();
End Sub;

См. также:

IEtlPlainDataCopy