CreateFiltrationMatrix (Selections: IDimSelectionSet): IMatrixModel;
CreateFiltrationMatrix (Selections: Prognoz.Platform.Interop.Dimensions.IDimSelectionSet):
Prognoz.Platform.Interop.ForeSystem.IMatrixModel;
Selections. Комплексная отметка справочника.
Метод CreateFiltrationMatrix создает матрицу отфильтрованных данных.
Данный метод позволяет получить информацию о наличии данных в базе данных временных рядов.
Для выполнения примера в репозитории необходимо наличие базы данных временных рядов с идентификатором «TSDB».
Добавьте ссылки на системные сборки: Cubes, Dimensions, Matrix, Metabase, Rds.
Function CreateRubricatorSelectionSet(facts: IMetaDictionary): IDimSelectionSet;
Var
Result: IDimSelectionSet;
Factory: IDimSelectionSetFactory;
Attribute: IMetaAttribute;
Begin
Factory := New DimSelectionSetFactory.Create As IDImSelectionSetFactory;
Result := Factory.CreateDimSelectionSet;
For Each Attribute In Facts.Attributes Do
If (Attribute.ValuesObject <> Null) And (Attribute.Nullable = False) Then
Result.Add((Attribute.ValuesObject.Open(Null) As IDimInstance));
Result.Item(Result.Count - 1).SelectAll;
End If;
End For;
Return Result;
End Function CreateRubricatorSelectionSet;
Sub UserProc;
Var
Metabase: IMetabase;
Object: IMetabaseObjectDescriptor;
Rubricator: IRubricatorInstance;
Selections: IDimSelectionSet;
FiltMat: IMatrix;
Begin
// Получим репозиторий
Metabase := MetabaseClass.Active;
// Получим базу данных временных рядов
Object := Metabase.ItemById("TSDB");
Rubricator := Object.Open(Null) As IRubricatorInstance;
// Получим матрицу отфильтрованных данных
Selections := CreateRubricatorSelectionSet(Rubricator.Rubricator.Facts);
FiltMat := Rubricator.CreateFiltrationMatrix(Selections) As IMatrix;
// Выведем в окно консоли количество измерений в матрице
Debug.WriteLine("Количество измерений в матрице: " + FiltMat.DimensionCount.ToString);
End Sub UserProc;
После выполнения примера в окно консоли выведется количество измерений, входящих в матрицу отфильтрованных данных.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore. Вместо компонентов Fore используйте их Fore.NET аналоги.
Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Matrix;
Imports Prognoz.Platform.Interop.Rds;
…
Shared Function CreateRubricatorSelectionSet(facts: IMetaDictionary): IDimSelectionSet;
Var
Result: IDimSelectionSet;
Factory: DimSelectionSetFactory = New DimSelectionSetFactory();
Attribute: IMetaAttribute;
Begin
Result := Factory.CreateDimSelectionSet();
For Each Attribute In Facts.Attributes Do
If (Attribute.ValuesObject <> Null) And (Attribute.Nullable = False) Then
Result.Add((Attribute.ValuesObject.Open(Null) As IDimInstance));
Result.Item[Result.Count - 1].SelectAll();
End If;
End For;
Return Result;
End Function CreateRubricatorSelectionSet;
Public Shared Sub Main(Params: StartParams);
Var
Metabase: IMetabase;
Object: IMetabaseObjectDescriptor;
Rubricator: IRubricatorInstance;
Selections: IDimSelectionSet;
FiltMat: IMatrix;
Begin
// Получим репозиторий
Metabase := Params.Metabase;
// Получим базу данных временных рядов
Object := Metabase.ItemById["TSDB"];
Rubricator := Object.Open(Null) As IRubricatorInstance;
// Получим матрицу отфильтрованных данных
Selections := CreateRubricatorSelectionSet(Rubricator.Rubricator.Facts);
FiltMat := Rubricator.CreateFiltrationMatrix(Selections) As IMatrix;
// Выведем в окно консоли количество измерений в матрице
System.Diagnostics.Debug.WriteLine("Количество измерений в матрице: " + FiltMat.DimensionCount.ToString());
End Sub;
См. также: