ChildRubricator: IRubricator;
ChildRubricator: Prognoz.Platform.Interop.Cubes.IRubricator;
The ChildRubricator property returns the child time series database.
The temporary database is created if the child time series database is missing. Bindings are saved into the source cube but not into the time series database when saving.
Executing the example requires that the repository contains a standard cube with the STD_CUBE identifier. Add links to the Metabase, Cube, Rds system assemblies.
<font color="#008000">// Data output function<br /></font> <font color="#008080">Function</font> ToString(Value: Variant): String;<br /> <font color="#008080">Var</font><br /> sRes: String;<br /> i, idx: integer;<br /> s: String;<br /> arr: Array <font color="#008080">Of</font> Variant;<br /> <font color="#008080">Begin</font><br /> <font color="#008080">Select</font> <font color="#008080">Case</font> Value.VarType<br /> <font color="#008080">Case</font> ForeVariantType.Integer:<br /> i := Value;<br /> sRes := i.ToString;<br /> <font color="#008080">Case</font> ForeVariantType.Matrix:<br /> arr := Value <font color="#008080">As</font> Array <font color="#008080">Of</font> Variant;<br /> <font color="#008080">For</font> idx := <font color="#008000">0</font> <font color="#008080">To</font> arr.Length - <font color="#008000">1</font> <font color="#008080">Do</font><br /> s := s + ToString(arr[idx]) + <font color="#800000">"; "</font>;<br /> <font color="#008080">End</font> <font color="#008080">For</font>;<br /> sRes := s;<br /> <font color="#008080">End</font> <font color="#008080">Select</font>;<br /> <font color="#008080">Return</font> sRes;<br /> <font color="#008080">End</font> <font color="#008080">Function</font> ToString;<br /> <br /> <font color="#008000">// Main procedure<br /></font> <span style="font-family: 'Courier New';"><font color="#008080">Sub</font> UserProc;<br /> <font color="#008080">Var</font><br /> mb: IMetabase;<br /> Cube: IStandardCube;<br /> Rub: IMetabaseObject;<br /> RubI: IRubricatorInstance;<br /> Key: Array[<font color="#008000">2</font>];<br /> FactD: IRubricatorFactData;<br /> FactVal: IFactorObservationValues;<br /> i: Integer;<br /> Mem: IMetaDataMember;<br /> <font color="#008080">Begin</font><br /> mb := MetabaseClass.Active;<br /> <font color="#008000">// Get cube<br /></font> Cube := mb.ItemById(<font color="#800000">"STD_CUBE"</font>).Bind <font color="#008080">As</font> IStandardCube;<br /> <font color="#008000">// Get child time series database<br /></font> Rub := Cube.ChildRubricator <font color="#008080">As</font> IMetabaseObject;<br /> <font color="#008080">If</font> Rub <> <font color="#008080">Null</font> <font color="#008080">Then</font><br /> RubI := Rub.Open(<font color="#008080">Null</font>) <font color="#008080">As</font> IRubricatorInstance;<br /> Key[<font color="#008000">0</font>] := <font color="#008000">512</font>;<br /> Key[<font color="#008000">1</font>] := <font color="#008000">1009</font>;<br /> <font color="#008000">// Get time series by value of compound key<br /></font> FactD := RubI.GetCompoundFactData(Key);<br /> <font color="#008000">// Output data of time series<br /></font> <font color="#008080">If</font> FactD <> <font color="#008080">Null</font> <font color="#008080">Then</font><br /> Debug.WriteLine(<font color="#800000">"____________"</font>);<br /> Debug.WriteLine(<font color="#800000">"Mnemo:"</font> + FactD.Mnemo);<br /> Debug.WriteLine(<font color="#800000">"Key: "</font> + FactD.FactorKey.ToString);<br /> Debug.WriteLine(<font color="#800000">"IsDeleted: "</font> + FactD.IsDeleted.ToString);<br /> Debug.WriteLine(<font color="#800000">"IsEmpty: "</font> + FactD.IsEmpty.ToString);<br /> Debug.WriteLine(<font color="#800000">"UseCompoundKey: "</font> + FactD.UseCompoundKey.ToString);<br /> Debug.WriteLine(<font color="#800000">"CompoundKey: "</font> + ToString(FactD.CompoundKey));<br /> Debug.WriteLine(<font color="#800000">"CompoundFactorKey: "</font> + ToString(FactD.CompoundFactorKey));<br /> Debug.WriteLine(<font color="#800000">"____________"</font>);<br /> <font color="#008000">// Output data of time series observations<br /></font> <font color="#008080">For</font> i := <font color="#008000">1980</font> <font color="#008080">To</font> <font color="#008000">2012</font> <font color="#008080">Do</font><br /> FactVal := RubI.GetObservationValues(FactD, DateTime.ComposeDay(i, <font color="#008000">1</font>, <font color="#008000">1</font>));<br /> <font color="#008080">If</font> FactVal <> <font color="#008080">Null</font> <font color="#008080">Then</font><br /> Debug.WriteLine(<font color="#800000">"Date: "</font> + DateTime.ComposeDay(i, <font color="#008000">1</font>, <font color="#008000">1</font>).ToString);<br /> Debug.WriteLine(<font color="#800000">"FactDataCompoundKey: "</font> + ToString(FactVal.FactDataCompoundKey));<br /> Mem := FactVal.Record.Members.FindByKind(MetaAttributeKind.Value);<br /> Debug.WriteLine(<font color="#800000">"Value: "</font> + ToString(Mem.Value));<br /> Debug.WriteLine(<font color="#800000">"----"</font>);<br /> <font color="#008080">End</font> <font color="#008080">If</font>;<br /> <font color="#008080">End</font> <font color="#008080">For</font>;<br /> <font color="#008080">End</font> <font color="#008080">If</font>;<br /> <font color="#008080">End</font> <font color="#008080">If</font>;<br /> <font color="#008080">End</font> <font color="#008080">Sub</font> UserProc;</span>
After the basic procedure is executed, the console window displays the data of time series and its observations that is obtained by the composite key value.
Executing the example requires that the repository contains a standard cube with the STD_CUBE identifier.
<font color="#008080">Imports</font> Prognoz.Platform.Interop.Cubes;<br /> <font color="#008080">Imports</font> Prognoz.Platform.Interop.Rds;<br /> …<br /> <span style="font-family: 'Courier New';"><font color="#008000">// Basic procedure<br /> </font>[STAThread]<br /> <font color="#008080">Public</font> <font color="#008080">Shared</font> <font color="#008080">Sub</font> Main(Params: StartParams);<br /> <font color="#008080">Var</font><br /> mb: IMetabase;<br /> Cube: IStandardCube;<br /> Rub: IMetabaseObject;<br /> RubI: IRubricatorInstance;<br /> Key: Array[<font color="#008000">2</font>] <font color="#008080">Of</font> object;<br /> KeyO: object;<br /> FactD: RubricatorFactData;<br /> FactVal: IFactorObservationValues;<br /> i: Integer;<br /> Mem: IMetaDataMember;<br /> <font color="#008080">Begin</font><br /> mb := Params.Metabase;<br /> <font color="#008000">// Obtaining the cube<br /> </font> Cube := mb.ItemById[<font color="#800000">"STD_CUBE"</font>].Bind() <font color="#008080">As</font> IStandardCube;<br /> <font color="#008000">// Obtaining child time series database<br /> </font> Rub := Cube.ChildRubricator <font color="#008080">As</font> IMetabaseObject;<br /> <font color="#008080">If</font> Rub <> <font color="#008080">Null</font> <font color="#008080">Then</font><br /> RubI := Rub.Open(<font color="#008080">Null</font>) <font color="#008080">As</font> IRubricatorInstance;<br /> <font color="#008000">//Key := New string[2];<br /> </font> Key[<font color="#008000">0</font>] := <font color="#800000">"512"</font>; Key[<font color="#008000">1</font>] := <font color="#800000">"1009"</font>;<br /> <font color="#008000">// Obtaining time series according to the compound key value<br /> </font> FactD := RubI.GetCompoundFactData(Key, DictionaryGetDataOptions.dgdoNone);<br /> <font color="#008000">// Displaying data of time series<br /> </font> <font color="#008080">If</font> FactD <> <font color="#008080">Null</font> <font color="#008080">Then</font><br /> System.Diagnostics.Debug.WriteLine(<font color="#800000">"____________"</font>);<br /> System.Diagnostics.Debug.WriteLine(<font color="#800000">"Mnemo:"</font> + FactD.Mnemo);<br /> System.Diagnostics.Debug.WriteLine(<font color="#800000">"Key: "</font> + FactD.FactorKey.ToString());<br /> System.Diagnostics.Debug.WriteLine(<font color="#800000">"IsDeleted: "</font> + FactD.IsDeleted.ToString());<br /> System.Diagnostics.Debug.WriteLine(<font color="#800000">"IsEmpty: "</font> + FactD.IsEmpty.ToString());<br /> System.Diagnostics.Debug.WriteLine(<font color="#800000">"UseCompoundKey: "</font> + FactD.UseCompoundKey.ToString());<br /> System.Diagnostics.Debug.WriteLine(<font color="#800000">"CompoundKey: "</font> + ToString(FactD.CompoundKey));<br /> System.Diagnostics.Debug.WriteLine(<font color="#800000">"CompoundFactorKey: "</font> + ToString(FactD.CompoundFactorKey));<br /> System.Diagnostics.Debug.WriteLine(<font color="#800000">"____________"</font>);<br /> <font color="#008000">// Displaying data of time series observation<br /> </font> <font color="#008080">For</font> i := <font color="#008000">1980</font> <font color="#008080">To</font> <font color="#008000">2012</font> <font color="#008080">Do</font><br /> FactVal := RubI.GetObservationValues(FactD, DateTime.Parse(i + <font color="#800000">".1.1"</font>), <font color="#008000">0</font> <font color="#008080">As</font> DictionaryGetDataOptions);<br /> <font color="#008080">If</font> FactVal <> <font color="#008080">Null</font> <font color="#008080">Then</font><br /> System.Diagnostics.Debug.WriteLine(<font color="#800000">"Date: "</font> + DateTime.Parse(i + <font color="#800000">".1.1"</font>).ToString());<br /> System.Diagnostics.Debug.WriteLine(<font color="#800000">"FactDataCompoundKey: "</font> + ToString(FactVal.FactDataCompoundKey));<br /> Mem := FactVal.Record.Members.FindByKind(MetaAttributeKind.meakValue, <font color="#008000">0</font>);<br /> System.Diagnostics.Debug.WriteLine(<font color="#800000">"Value: "</font> + Mem.Value.ToString());<br /> System.Diagnostics.Debug.WriteLine(<font color="#800000">"----"</font>);<br /> <font color="#008080">End</font> <font color="#008080">If</font>;<br /> <font color="#008080">End</font> <font color="#008080">For</font>;<br /> <font color="#008080">End</font> <font color="#008080">If</font>;<br /> <font color="#008080">End</font> <font color="#008080">If</font>;<br /> <font color="#008080">End</font> <font color="#008080">Sub</font>;<br /> <br /> <font color="#008000">// Data dysplay function<br /> </font><font color="#008080">Public</font> <font color="#008080">Shared</font> <font color="#008080">Function</font> ToString(Value: object): String;<br /> <font color="#008080">Var</font><br /> sRes: String;<br /> idx: integer;<br /> s: String;<br /> arr: Array <font color="#008080">Of</font> object;<br /> <font color="#008080">Begin</font><br /> <font color="#008080">If</font> Value.GetType().IsArray <font color="#008080">Then</font><br /> arr := Value <font color="#008080">As</font> Array <font color="#008080">Of</font> object;<br /> <font color="#008080">For</font> idx := <font color="#008000">0</font> <font color="#008080">To</font> arr.Length - <font color="#008000">1</font> <font color="#008080">Do</font><br /> s := s + ToString(arr[idx]) + <font color="#800000">"; "</font>;<br /> <font color="#008080">End</font> <font color="#008080">For</font>;<br /> sRes := s;<br /> <font color="#008080">Else</font><br /> sRes := Value.ToString();<br /> <font color="#008080">End</font> <font color="#008080">If</font>;<br /> <font color="#008080">Return</font> sRes;<br /> <font color="#008080">End</font> <font color="#008080">Function</font> ToString;</span>
After executing the example the console window displays the data of time series and its observations that is obtained by the composite key value.
See also:
Example code