IStandardCube.ChildRubricator

Синтаксис

ChildRubricator: IRubricator;

ChildRubricator: Prognoz.Platform.Interop.Cubes.IRubricator;

Описание

Свойство ChildRubricator возвращает дочернюю БД временных рядов.

Комментарии

Если дочерняя БД временных рядов отсутствует, то создается временная база. При сохранении связи сохраняются на исходный куб, а не на БД временных рядов.

Пример Fore

Для выполнения примера предполагается наличие в репозитории стандартного куба с идентификатором «STD_CUBE».

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

// Функция вывода данных
Function ToString(Value: Variant): String;
Var
    sRes: String;
    i, l, idx: integer;
    s: String;
    arr: Array 
Of Variant;
Begin
    
Select Case Value.VarType
        
Case ForeVariantType.Integer:
            i := Value;
            sRes := i.ToString;
        
Case ForeVariantType.Matrix:
            arr := Value 
As Array Of Variant;
            l := arr.Length - 
1;
            
For idx := 0 To l Do
                s := s + ToString(arr[idx]) + 
"; ";
            
End For;
            sRes := s;
    
End Select;
    
Return sRes;
End Function ToString;

// Основная процедура
Sub UserProc;
Var
    mb: IMetabase;
    Cube: IStandardCube;
    Rub: IMetabaseObject;
    RubI: IRubricatorInstance;
    Key: Array[
2];
    FactD: IRubricatorFactData;
    FactVal: IFactorObservationValues;
    i: Integer;
    Mem: IMetaDataMember;
Begin
    mb := MetabaseClass.Active;
    
// Получаем куб
    Cube := mb.ItemById("STD_CUBE").Bind As IStandardCube;
    
// Получаем дочернюю БД временных рядов
    Rub := Cube.ChildRubricator As IMetabaseObject;
    
If Rub <> Null Then
        RubI := Rub.Open(
NullAs IRubricatorInstance;
        Key[
0] := 512;
        Key[
1] := 1009;
        
// Получаем временной ряд по значению составного ключа
        FactD := RubI.GetCompoundFactData(Key);
        
// Выводим данные о временном ряде
        If FactD <> Null Then
            Debug.WriteLine(
"____________");
            Debug.WriteLine(
"Mnemo:" + FactD.Mnemo);
            Debug.WriteLine(
"Key: " + FactD.FactorKey.ToString);
            Debug.WriteLine(
"IsDeleted: " + FactD.IsDeleted.ToString);
            Debug.WriteLine(
"IsEmpty: " + FactD.IsEmpty.ToString);
            Debug.WriteLine(
"UseCompoundKey: " + FactD.UseCompoundKey.ToString);
            Debug.WriteLine(
"CompoundKey: " + ToString(FactD.CompoundKey));
            Debug.WriteLine(
"CompoundFactorKey: " + ToString(FactD.CompoundFactorKey));
            Debug.WriteLine(
"____________");
            
// Выводим данные о наблюдениях временного ряда
            For i := 1980 To 2012 Do
                FactVal := RubI.GetObservationValues(FactD, DateTime.ComposeDay(i, 
11));
                
If FactVal <> Null Then
                    Debug.WriteLine(
"Date: " + DateTime.ComposeDay(i, 11).ToString);
                    Debug.WriteLine(
"FactDataCompoundKey: " + ToString(FactVal.FactDataCompoundKey));
                    Mem := FactVal.Record.Members.FindByKind(MetaAttributeKind.Value);
                    Debug.WriteLine(
"Value: " + ToString(Mem.Value));
                    Debug.WriteLine(
"----");
                
End If;
            
End For;
        
End If;
    
End If;
End Sub UserProc;

Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Rds;

// Основная процедура
Public Shared Sub Main(Params: StartParams);
Var
    mb: IMetabase;
    Cube: IStandardCube;
    Rub: IMetabaseObject;
    RubI: IRubricatorInstance;
    Key: Array[
2Of object;
    KeyO: object;
    FactD: RubricatorFactData;
    FactVal: IFactorObservationValues;
    i: Integer;
    Mem: IMetaDataMember;
Begin
    mb := Params.Metabase;
    
// Получаем куб
    Cube := mb.ItemById["STD_CUBE"].Bind() As IStandardCube;
    
// Получаем дочернюю БД временных рядов
    Rub := Cube.ChildRubricator As IMetabaseObject;
    
If Rub <> Null Then
        RubI := Rub.Open(
NullAs IRubricatorInstance;
        
//Key := New string[2];
        Key[0] := "512"; Key[1] := "1009";
        
// Получаем временной ряд по значению составного ключа
        FactD := RubI.GetCompoundFactData(Key, DictionaryGetDataOptions.dgdoNone);
        
// Выводим данные о временном ряде
        If FactD <> Null Then
            System.Diagnostics.Debug.WriteLine(
"____________");
            System.Diagnostics.Debug.WriteLine(
"Mnemo:" + FactD.Mnemo);
            System.Diagnostics.Debug.WriteLine(
"Key: " + FactD.FactorKey.ToString());
            System.Diagnostics.Debug.WriteLine(
"IsDeleted: " + FactD.IsDeleted.ToString());
            System.Diagnostics.Debug.WriteLine(
"IsEmpty: " + FactD.IsEmpty.ToString());
            System.Diagnostics.Debug.WriteLine(
"UseCompoundKey: " + FactD.UseCompoundKey.ToString());
            System.Diagnostics.Debug.WriteLine(
"CompoundKey: " + ToString(FactD.CompoundKey));
            System.Diagnostics.Debug.WriteLine(
"CompoundFactorKey: " + ToString(FactD.CompoundFactorKey));
            System.Diagnostics.Debug.WriteLine(
"____________");
            
// Выводим данные о наблюдениях временного ряда
            For i := 1980 To 2012 Do
                FactVal := RubI.GetObservationValues(FactD, DateTime.Parse(i + 
".1.1"), 0 As DictionaryGetDataOptions);
                
If FactVal <> Null Then
                    System.Diagnostics.Debug.WriteLine(
"Date: " + DateTime.Parse(i + ".1.1").ToString());
                    System.Diagnostics.Debug.WriteLine(
"FactDataCompoundKey: " + ToString(FactVal.FactDataCompoundKey));
                    Mem := FactVal.Record.Members.FindByKind(MetaAttributeKind.meakValue, 
0);
                    System.Diagnostics.Debug.WriteLine(
"Value: " + Mem.Value.ToString());
                    System.Diagnostics.Debug.WriteLine(
"----");
                
End If;
            
End For;
        
End If;
    
End If;
End Sub;

// Функция вывода данных
Public Shared Function ToString(Value: object): String;
Var
    sRes: String;
    l, idx: integer;
    s: String;
    arr: Array 
Of object;
Begin
    
If Value.GetType().IsArray Then
        arr := Value 
As Array Of object;
        l := arr.Length - 
1;
        
For idx := 0 To l Do
            s := s + ToString(arr[idx]) + 
"; ";
        
End For;
        sRes := s;
    
Else
        sRes := Value.ToString();
    
End If;
    
Return sRes;
End Function ToString;

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

См. также:

IStandardCube