IEtlPlainDataForceQueryForFile.ForceQuery

Синтаксис Fore

ForceQuery: Boolean;

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

ForceQuery: boolean;

Описание

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

Комментарии

Возможные значения:

Примечание. При создании задачи ETL через импорт данных свойству ForceQuery источников данных будет установлено значение True.

Пример

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

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

Sub UserProc;
Var
    MB: IMetabase;
    EtlTask: IEtlTask;
    i, j, k: Integer;
    EtlProvider: IEtlPlainDataProvider;
    ETLConsumer: IEtlPlainDataConsumer;
    QueryForFile: IEtlPlainDataForceQueryForFile;
    dtProv: IDtExcelProviderEx;
    dtCons: IDtExcelConsumer;
    WxProvider, WxConsumer: IWxRectangle;
    WxETLProvider, WxETLConsumer: IWxETLObject;
    ProvPlainOutput: IEtlPlainOutput;
    ConsPlainInput: IEtlPlainInput;
    PlainLink: IEtlPlainLink;
    WLink: IWxLink;
    WxETLLink: IWxETLObject;
    FieldMapping: IEtlPlainLinkFieldMapping;
    ETLSrcF, ETLDestF: IEtlPlainField;
Begin
    // Получим репозиторий
    MB := MetabaseClass.Active;
    // Получим задачу ETL
    ETLTask := MB.ItemById("ETL").Edit As IEtlTask;
    // Удалим объекты задачи ETL
    If EtlTask.Workspace.Shapes.Count > 0 Then
        j := EtlTask.Workspace.Shapes.Count - 1;
        For i := j To 0 Step - 1 Do
            EtlTask.Workspace.Shapes.Item(i).Delete;
        End For;
    End If;
    If EtlTask.Count > 0 Then
        k := EtlTask.Count - 1;
        For i := k To 0 Step - 1 Do
            EtlTask.Item(i).Remove;
        End For;
    End If;
    // Создадим источник EXCEL
    ETLProvider := ETLTask.Create(EtlObjectType.PlainDataExcelProviderEx) As IEtlPlainDataProvider;
    ETLProvider := ETLProvider.Edit;
    ETLProvider.Id := "Excel_Provider";
    ETLProvider.Name := "Excel_Provider";
    dtProv := ETLProvider.Provider As IDtExcelProviderEx;
    dtProv.File := "C:\Prov.xlsx";
    dtProv.Format := "xlsx";
    dtProv.Sheet := "Sheet1";
    dtProv.FieldsFromFile;
    // Включим запрос файла при выполнении задачи ETL
    QueryForFile := ETLProvider As IEtlPlainDataForceQueryForFile;
    QueryForFile.ForceQuery := True;
    // Заполним поля из источника
    ETLProvider.FillFromSource;
    // Сохраним источник
    ETLProvider.Save;
    // Создадим приёмник EXCEL
    ETLConsumer := ETLTask.Create(EtlObjectType.PlainDataExcelConsumer) As IEtlPlainDataConsumer;
    ETLConsumer := ETLConsumer.Edit;
    ETLConsumer.Id := "Excel_Consumer";
    ETLConsumer.Name := "Excel_Consumer";
    dtCons := ETLConsumer.Consumer As IDtExcelConsumer;
    dtCons.File := "C:\Cons.xls";
    dtCons.Table := "Sheet1";
    // Создадим визуальное представление источника
    WxProvider := EtlTask.Workspace.CreateRectangle;
    WxETLProvider := New WxETLObject.Create;
    WxETLProvider.ETLObject := EtlProvider;
    WxProvider.Style.TextPosition := WxTextPosition.Bottom;
    WxProvider.Style.PictureMarginTop := -10;
    WxProvider.PinPosition := New GxPointF.Create(00);
    WxProvider.Extension := WxETLProvider As IWxShapeExtension;
    // Создадим визуальное представление приёмника
    WxConsumer := EtlTask.Workspace.CreateRectangle;
    WxETLConsumer := New WxETLObject.Create;
    WxETLConsumer.ETLObject := EtlConsumer;
    WxConsumer.Style.TextPosition := WxTextPosition.Bottom;
    WxConsumer.Style.PictureMarginTop := -10;
    WxConsumer.PinPosition := New GxPointF.Create(500);
    WxConsumer.Extension := WxETLConsumer As IWxShapeExtension;
    // Создадим связь и ее визуальное представление
    ProvPlainOutput := EtlProvider.PlainOutput;
    ConsPlainInput := EtlConsumer.PlainInput;
    PlainLink := EtlTask.CreatePlainLink;
    PlainLink.DestinationObjectInput := ConsPlainInput;
    PlainLink.SourceObjectOutput := ProvPlainOutput;
    ConsPlainInput.Fields.Fill(ProvPlainOutput.Fields);
    // Свяжем поля источника и приёмника
        For i := 0 To EtlProvider.PlainOutput.Fields.Count - 1 Do
            ETLSrcF := EtlConsumer.PlainInput.Fields.Item(i);
            ETLDestF := EtlProvider.PlainOutput.Fields.Item(i);
            FieldMapping := PlainLink.Link(EtlConsumer.PlainInput.Fields.Item(i));
            FieldMapping.Type := EtlPlainLinkFieldMappingType.Field;
            FieldMapping.Field := EtlProvider.PlainOutput.Fields.Item(i);
        End For;
    WLink := EtlTask.Workspace.AutoLinkShapes(WxProvider, WxConsumer);
    WLink.Style.LinePenBeginWxCap := WxLineCap.Flat;
    WLink.Style.LinePenEndWxCap := WxLineCap.Arrow30DegreeFilled;
    WxETLLink := New WxEtlObject.Create;
    WxETLLink.EtlObject := PlainLink;
    WLink.Extension := WxETLLink As IWxShapeExtension;
    // Сохраним приёмник
    ETLConsumer.Save;
    // Сохраним задачу ETL
    (ETLTask As IMetabaseObject).Save;
End Sub UserProc;

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

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    EtlTask: IEtlTask;
    i, j, k: Integer;
    EtlProvider: IEtlPlainDataProvider;
    ETLConsumer: IEtlPlainDataConsumer;
    QueryForFile: IEtlPlainDataForceQueryForFile;
    dtProv: IDtExcelProviderEx;
    dtCons: IDtExcelConsumer;
    WxProvider, WxConsumer: IWxRectangle;
    WxETLProvider, WxETLConsumer: IWxETLObject;
    ProvPlainOutput: IEtlPlainOutput;
    ConsPlainInput: IEtlPlainInput;
    PlainLink: IEtlPlainLink;
    WLink: IWxLink;
    WxETLLink: IWxETLObject;
    FieldMapping: IEtlPlainLinkFieldMapping;
    ETLSrcF, ETLDestF: IEtlPlainField;
    PointF: GxPointF = New GxPointFClass();
Begin
    // Получим репозиторий
    MB := Params.Metabase;
    // Получим задачу ETL
    ETLTask := MB.ItemById["ETL"].Edit() As IEtlTask;
    // Удалим объекты задачи ETL
    If EtlTask.Workspace.Shapes.Count > 0 Then
        j := EtlTask.Workspace.Shapes.Count - 1;
        For i := j To 0 Step - 1 Do
            EtlTask.Workspace.Shapes.Item[i].Delete();
        End For;
    End If;
    If EtlTask.Count > 0 Then
        k := EtlTask.Count - 1;
        For i := k To 0 Step - 1 Do
            EtlTask.Item[i].Remove();
        End For;
    End If;
    // Создадим источник EXCEL
    ETLProvider := ETLTask.Create(EtlObjectType.eotPlainDataExcelProviderEx) As IEtlPlainDataProvider;
    ETLProvider := ETLProvider.Edit();
    ETLProvider.Id := "Excel_Provider";
    ETLProvider.Name := "Excel_Provider";
    dtProv := ETLProvider.Provider As IDtExcelProviderEx;
    dtProv.File := "C:\\PROV.xlsx";
    dtProv.Format := "xlsx";
    dtProv.Sheet := "Sheet1";
    dtProv.FieldsFromFile();
    // Включим запрос файла при выполнении задачи ETL
    QueryForFile := ETLProvider As IEtlPlainDataForceQueryForFile;
    QueryForFile.ForceQuery := True;
    // Заполним поля из источника
    ETLProvider.FillFromSource();
    // Сохраним источник
    ETLProvider.Save();
    // Создадим приёмник EXCEL
    ETLConsumer := ETLTask.Create(EtlObjectType.eotPlainDataExcelConsumer) As IEtlPlainDataConsumer;
    ETLConsumer := ETLConsumer.Edit();
    ETLConsumer.Id := "Excel_Consumer";
    ETLConsumer.Name := "Excel_Consumer";
    dtCons := ETLConsumer.Consumer As IDtExcelConsumer;
    dtCons.File := "C:\\CONS.xls";
    dtCons.Table := "Sheet1";
    // Создадим визуальное представление источника
    WxProvider := EtlTask.Workspace.CreateRectangle();
    WxETLProvider := New WxETLObject.Create();
    WxETLProvider.ETLObject := EtlProvider;
    WxProvider.Style.TextPosition := WxTextPosition.wtpBottom;
    WxProvider.Style.PictureMarginTop := -10;
    
    PointF.Create(00);
    WxProvider.PinPosition := PointF;
    WxProvider.Extension := WxETLProvider As IWxShapeExtension;
    // Создадим визуальное представление приёмника
    WxConsumer := EtlTask.Workspace.CreateRectangle();
    WxETLConsumer := New WxETLObject.Create();
    WxETLConsumer.ETLObject := EtlConsumer;
    WxConsumer.Style.TextPosition := WxTextPosition.wtpBottom;
    WxConsumer.Style.PictureMarginTop := -10;
    
    PointF.Create(500);
    WxConsumer.PinPosition := PointF;
    WxConsumer.Extension := WxETLConsumer As IWxShapeExtension;
    // Создадим связь и ее визуальное представление
    ProvPlainOutput := EtlProvider.PlainOutput;
    ConsPlainInput := EtlConsumer.PlainInput;
    PlainLink := EtlTask.CreatePlainLink();
    PlainLink.DestinationObjectInput := ConsPlainInput;
    PlainLink.SourceObjectOutput := ProvPlainOutput;
    ConsPlainInput.Fields.Fill(ProvPlainOutput.Fields);
    // Свяжем поля источника и приёмника
        For i := 0 To EtlProvider.PlainOutput.Fields.Count - 1 Do
            ETLSrcF := EtlConsumer.PlainInput.Fields.Item[i];
            ETLDestF := EtlProvider.PlainOutput.Fields.Item[i];
            FieldMapping := PlainLink.Link[EtlConsumer.PlainInput.Fields.Item[i]];
            FieldMapping.Type := EtlPlainLinkFieldMappingType.fmtField;
            FieldMapping.Field := EtlProvider.PlainOutput.Fields.Item[i];
        End For;
    WLink := EtlTask.Workspace.AutoLinkShapes(WxProvider, WxConsumer);
    WLink.Style.LinePenBeginWxCap := WxLineCap.wlcFlat;
    WLink.Style.LinePenEndWxCap := WxLineCap.wlcArrow30DegreeFilled;
    WxETLLink := New WxEtlObject.Create();
    WxETLLink.EtlObject := PlainLink;
    WLink.Extension := WxETLLink As IWxShapeExtension;
    // Сохраним приёмник
    ETLConsumer.Save();
    // Сохраним задачу ETL
    (ETLTask As IMetabaseObject).Save();
End Sub;

После выполнения примера в задаче ETL будут созданы объекты «Источник EXCEL», «Приёмник EXCEL» и связь между ними. Для источника и приёмника будут заданы файлы, также для источника будет указана необходимость выбора файла при выполнении задачи ETL.

См. также:

IEtlPlainDataForceQueryForFile