IStandardCubeDestination.Datasets

Синтаксис

Datasets: IStandardCubeDatasets;

Datasets: Prognoz.Platform.Interop.Cubes.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;

Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Db;
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Metabase;

Public Shared Sub Main(Params: StartParams);
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 := Params.Metabase;
    
//Информация для создания нового объекта репозитория
    CrInfo := Mb.CreateCreateInfo();
    CrInfo.ClassID := MetabaseObjectClass.KE_CLASS_STDCUBE 
As Integer;
    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;

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

См. также:

IStandardCubeDestination