IStandardCubeDestination.Datasets

Синтаксис

Datasets: IStandardCubeDatasets;

Описание

Свойство Datasets возвращает коллекцию источников данных для варианта отображения куба.

Комментарии

В качестве источника данных могут выступать таблицы, присоединённые таблицы, представления, запросы, источники данных ODBC, табличные справочники НСИ и табличные составные справочники НСИ.

Пример

Для выполнения примера предполагается наличие в репозитории таблицы с идентификатором «T_DATA», в таблице созданы поля с идентификаторами «ID», «DATE» и «VALUE». Также в репозитории должны быть созданы следующие справочники:

Добавьте ссылки на системные сборки: Cubes, Db, Dimensions. Metabase.

Sub UserProc;
Var
    Mb: IMetabase;
    CrInfo: IMetabaseObjectCreateInfo;
    MObj: IMetabaseObject;
    Cube: IStandardCube;
    CubeDest: IStandardCubeDestination;
    Dims: IStandardCubeDimensions;
    Datasets: IStandardCubeDatasets;
    Dataset: IStandardCubeDataset;
    FactDim, Dim, CalendarDim: IStandardCubeDimension;
    FactDimInst: IDimInstance;
    KeyAttribute: IDimAttributeInstance;
    FactBindings: IStandardCubeFactBindings;
    DimBinding: IStandardCubeDimensionBinding;
    DimIndex: IDimIndex;
    DataSet_ID: String = 
"T_DATA";
Begin
    Mb := MetabaseClass.Active;
    
//Информация для создания нового объекта репозитория
    CrInfo := MB.CreateCreateInfo;
    CrInfo.ClassID := MetabaseObjectClass.KE_CLASS_STDCUBE;
    CrInfo.Id := 
"NEW_STD_CUBE";
    CrInfo.Name := 
"Новый стандартный куб";
    CrInfo.Parent := 
Mb.Root;
    //Создание куба
    MObj := Mb.CreateObject(CrInfo).Edit;
    Cube := MObj 
As IStandardCube;
    CubeDest := Cube.Destinations.Item(
0);
    Dims := CubeDest.Dimensions;
    Datasets := CubeDest.Datasets;
    
//Задаем в качестве измерения фактов - существующий справочник репозитория
    FactDim := Dims.Add(MB.ItemById("FACTS").Bind As IDimensionModel);
    Cube.ExternalFactDimension := 
True;
    FactDim.FactDimension := 
True;
    
//Добавляем источник данных
    Dataset := Datasets.Add(MB.ItemById(DataSet_ID).Bind As IDatasetModel);
    
//Привязка факта куба
    FactDimInst := FactDim.OpenDimension;
    KeyAttribute := FactDimInst.Attributes.FindById(
"KEY");
    FactBindings := FactDim.FactBindings(Dataset);
    FactBindings.Binding(KeyAttribute.Value(
0)).Formula.AsString := DataSet_ID + ".VALUE";
    
//Добавление измерений
    Dim := Dims.Add(MB.ItemById("INDICATORS").Bind As IDimensionModel);
    CalendarDim := Dims.Add(MB.ItemById(
"CALENDAR").Bind As IDimensionModel);
    
//Привязка измерений
    //"Справочник"
    DimIndex := Dim.Dimension.Indexes.PrimaryIndex;
    DimBinding := Dim.Binding(Dataset);
    DimBinding.Index := DimIndex;
    DimBinding.Binding(DimIndex.Attributes.Item(
0)).AsString := DataSet_ID + ".ID";
    
//"Календарь"
    DimIndex := CalendarDim.Dimension.Blocks.Item("YEARS").Indexes.FindById("INDEX_BLOCK");
    DimBinding := CalendarDim.Binding(Dataset);
    DimBinding.Index := DimIndex;
    DimBinding.Binding(DimIndex.Attributes.Item(
0)).AsString := DataSet_ID + ".DATE";
    MObj.Save;
End Sub UserProc;

При выполнении примера в корневом каталоге репозитория будет создан новый куб. В куб будет добавлен один источник, задано измерение фактов и добавлены два дополнительных измерения. Для первого факта в измерении фактов и дополнительных измерений будут настроены привязки к полям источника данных.

См. также:

IStandardCubeDestination