UseDwarf: Boolean;
UseDwarf: boolean;
Свойство UseDwarf определяет, использовать ли оптимизацию при загрузке данных базы данных временных рядов в память.
Допустимые значения:
True. Оптимизация используется. При загрузке данных используется меньше оперативной памяти;
False. Оптимизация не используется.
Для выполнения примера предполагается наличие в репозитории базы данных временных рядов с идентификатором «FC». В данной базе должен присутствовать атрибут рядов с идентификатором «COUNTRY», являющийся ссылкой на справочник.
Добавьте ссылки на системные сборки «Metabase», «Cubes», «Matix», «Rds», «Orm».
Sub uProc;
Var
MB: IMetabase;
RubDesc: IMetabaseObjectDescriptor;
RubrIn: IRubricatorInstance;
Cub: ICubeInstance;
Dest: ICubeInstanceDestination;
FactorExec: IRubricatorFactorExecutor;
FactsLookup: IRubricatorFactsLookup;
MetaDLookup: IMetaDictionaryLookup;
Key: Array Of Integer;
i: Integer;
Cond: IOrmCondition;
Exec: ICubeInstanceDestinationExecutor;
Mat: IMatrix;
Ite: IMatrixIterator;
Begin
MB := MetabaseClass.Active;
RubDesc := MB.ItemById("FC");
RubrIn := RubDesc.Open(Null) As IRubricatorInstance;
Cub := RubrIn As ICubeInstance;
Dest := Cub.Destinations.DefaultDestination;
Exec := Dest.CreateExecutor;
FactorExec := Exec As IRubricatorFactorExecutor;
FactorExec.MultipleFactors := True;
FactsLookup := RubrIn.CreateFactsLookup;
MetaDLookup := FactsLookup.Lookup;
Cond := MetaDLookup.Where.Add;
Cond.AttributeName := "COUNTRY";
Cond.Value := 512;
i := FactsLookup.LookupFactors.Length;
Key := New Integer[i];
Key := FactsLookup.LookupFactors;
FactorExec.SetFactorKeys(Key);
FactorExec.ValueKind := MetaAttributeKind.Value;
FactorExec.ValueId := "VL";
FactorExec.WhereRevisionBetween(1, 1);
FactorExec.UseDwarf := True;
Exec := FactorExec.AsCubeExecutor;
Exec.PrepareExecute(Null);
Exec.PerformExecute;
Mat := Exec.Matrix;
Ite := Mat.CreateIterator;
Ite.Move(IteratorDirection.First);
While Ite.Valid Do
Debug.WriteLine(Ite.Value);
Ite.Move(IteratorDirection.Next);
End While;
End Sub uProc;
После выполнения примера в окно консоли будут выведены значения временных рядов для первой ревизии, соответствующих следующему условию: значение атрибута «COUNTRIES» равняется «512». При получении данных будет использоваться оптимизация.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Matrix;
Imports Prognoz.Platform.Interop.Orm;
Imports Prognoz.Platform.Interop.Rds;
Imports Prognoz.Platform.Interop.ForeSystem;
…
[STAThread]
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
RubDesc: IMetabaseObjectDescriptor;
RubrIn: IRubricatorInstance;
Cub: ICubeInstance;
Dest: ICubeInstanceDestination;
FactorExec: IRubricatorFactorExecutor;
FactsLookup: IRubricatorFactsLookup;
MetaDLookup: IMetaDictionaryLookup;
Key: System.Array;
i: Integer;
Cond: IOrmCondition;
Exec: ICubeInstanceDestinationExecutor;
Mat: IMatrix;
Ite: IMatrixIterator;
Begin
mb := Params.Metabase;
RubDesc := MB.ItemById["FC"];
RubrIn := RubDesc.Open(Null) As IRubricatorInstance;
Cub := RubrIn As ICubeInstance;
Dest := Cub.Destinations.DefaultDestination;
Exec := Dest.CreateExecutor();
FactorExec := Exec As IRubricatorFactorExecutor;
FactorExec.MultipleFactors := True;
FactsLookup := RubrIn.CreateFactsLookup();
MetaDLookup := FactsLookup.Lookup;
Cond := MetaDLookup.Where.Add();
Cond.AttributeName := "COUNTRY";
Cond.Value := 512;
i := FactsLookup.LookupFactors().Length;
Key := New Integer[i];
Key := FactsLookup.LookupFactors();
FactorExec.SetFactorKeys(Key);
FactorExec.ValueKind := MetaAttributeKind.meakValue;
FactorExec.ValueId := "VL";
FactorExec.WhereRevisionBetween(1, 1);
FactorExec.UseDwarf := True;
Exec := FactorExec.AsCubeExecutor();
Exec.PrepareExecute(Null);
Exec.PerformExecute(False);
Mat := Exec.Matrix;
Ite := Mat.CreateIterator();
Ite.Move(IteratorDirection.itdFirst);
While Ite.Valid Do
System.Diagnostics.Debug.WriteLine(Ite.Value);
Ite.Move(IteratorDirection.itdNext);
End While;
End Sub;
См. также: