IMDCalculationSliceFree.Dimension

Синтаксис

Dimension: IDimensionModel;

Описание

Свойство Dimension определяет измерение, данные которого будут использоваться при составлении формул многомерного расчета на сервере БД. Данное измерение будет связано с полями Fields посредством значений атрибутов измерения, по которому создан индекс Index.

Пример

Для выполнения примера предполагается наличие в репозитории базы данных с идентификатором "MDBD" В данной БД хранятся таблицы, содержащие следующую структуру:

Таблица TABLE_INPUT:

Наименование поля Назначение
Data Дата занесения значения.
CityId Идентификаторы городов, по которым содержится значения.
Value Значение показателя по указанному городу.

Таблица TABLE_OUTPUT:

Наименование поля Назначение
Data Дата занесения значения.
CountryId Идентификаторы стран, по которым будут рассчитываться значения.
Value Значение показателя по стране, рассчитанное с учетом значений по городам.

Так же в БД содержится таблица, на которой основано измерение "Dim_1". Данное измерение используется для составления иерархической зависимости между городами и странами. В дальнейшем используется для составления формул по выбранным координатам.

Sub Main;

Var

MB: IMetabase;

CrInfo: IMetabaseObjectCreateInfo;

MObj: IMetabaseObject;

MDCalc: IMDCalculation;

Destination: IMDCalculationDestination;

Source: IMDCalculationSource;

Slice: IMDCalculationSlice;

DimModel: IDimensionModel;

Fact: IMDCalculationfact;

FreeSlice: IMDCalculationSliceFree;

FixedSlice: IMDCalculationSliceFixed;

FormulasTable: IMDCalculationFormulasTable;

TableForFormulas: ITable;

Begin

MB := MetabaseClass.Active;

CrInfo := MB.CreateCreateInfo;

CrInfo.ClassID := MetabaseObjectClass.KE_CLASS_MDCALCULATION;

CrInfo.Id := "MDCALC_1";

CrInfo.Name := "Многомерный расчет на сервере";

CrInfo.Parent := Null;

MObj := MB.CreateObject(CrInfo).Edit;

MDCalc := MObj As IMDCalculation;

//Добавляем БД

MDCalc.Database := MB.ItemById("MDBD").Bind As IDatabase;

//Добавляем входную таблицу

Source := MDcalc.Sources.Add(Mb.ItemById("TABLE_INPUT").Bind As IDatasetModel);

//Добавляем разрез для поля "CityId" таблицы

Slice := Source.Slices.Add;

Slice.Fields := "CITYID";

Slice.Name := "Города";

Slice.FixType := MDCalculationSliceFixType.Free;

FreeSlice := Slice.Free;

//Связываем данный разрез со справочником Стран/городов

DimModel := MB.ItemById("Dim_1").Bind As IDimensionModel;

FreeSlice.Dimension := DimModel;

FreeSlice.Index := DimModel.Blocks.Item(0).Indexes.Item(0);

//Добавляем разрез для календаря

Slice := Source.Slices.Add;

Slice.Name := "Календарь";

Slice.Fields := "DATA";

Slice.FixType := MDCalculationSliceFixType.Fixed;

Slice.IsCalendar := True;

FixedSlice := Slice.Fixed;

//Добавляем разрез для показателя

Fact := Source.Facts.Add;

Fact.FieldName := "VALUE";

Fact.Name := "Показатель";

//Добавляем выходную таблицу

Destination := MDCalc.Destination;

Destination.Data := MB.ItemById("TABLE_OUTPUT").Bind As IDatasetModel;

//Добавляем разрез для поля "CountryId" таблицы

Slice := Destination.Slices.Add;

Slice.Fields := "COUNTRYID";

Slice.Name := "Страны/Города";

Slice.FixType := MDCalculationSliceFixType.Free;

FreeSlice := Slice.Free;

//Связываем данный разрез со справочником Стран/городов

DimModel := Mb.ItemById("Dim_1").Bind As IDimensionModel;

FreeSlice.Dimension := DimModel;

FreeSlice.Index := DimModel.Blocks.Item(0).Indexes.Item(0);

//Добавляем разрез для календаря

Slice := Destination.Slices.Add;

Slice.Name := "Календарь";

Slice.Id := "CALEN";

Slice.Fields := "DATA";

Slice.FixType := MDCalculationSliceFixType.Fixed;

Slice.IsCalendar := True;

//Добавляем разрез для показателя

Fact := Destination.Facts.Add;

Fact.FieldName := "VALUE";

Fact.Name := "Показатель";

//Указываю связь между фиксированными календарными разрезами

FixedSlice.Mapping := Destination.Slices.FindById("CALEN");

//Создаем новую таблицу формул

FormulasTable := MDcalc.FormulasTable;

TableForFormulas := FormulasTable.Create;

FormulasTable.Attach(TableForFormulas);

MObj.Save;

End Sub Main;

После выполнения примера в корневом каталоге репозитория будет создан объект - Многомерный расчет на сервере БД. Расчет будет осуществляться на основе значений, содержащихся в таблице "TABLE_INPUT". В качестве назначения будет установлена таблица "TABLE_OUTPUT". Для полей таблиц будут созданы необходимые разрезы, также будут созданы показатели, привязанные к полям "VALUE". Календарные разрезы будут зафиксированы.

См. также:

IMDCalculationSliceFree

IMDCalculationSlice.Fields

IMDCalculationSliceFree.Index