ICubeInstanceDestinationExecutor.DrillThrough

Fore Syntax

DrillThrough: ICubeExecutorDrillThroughItems;

Fore.NET Syntax

DrillThrough: Prognoz.Platform.Interop.Cubes.ICubeExecutorDrillThroughItems;

Description

The DrillThrough property returns the collection of drillthrough elements on cube calculation.

Comments

To use the property, the ICubeInstanceDestinationExecutor.PerformExecuteO property must use value of the CubeInstanceDestinationExecutorOptions.DrillThrough enumeration as a parameter.

Fore Example

Executing the example requires that the repository contains a standard cube with the CUBE identifier.

Add links to the Cubes, Dal, Db, Dimensions, Matrix, Metabase system assemblies.

Sub UserProc;
Var
    mb: IMetabase;
    cube: ICubeInstance;
    dest: ICubeInstanceDestination;
    executor: ICubeInstanceDestinationExecutor;
    selset: IDimSelectionSet;
    i: Integer;
    dtItems: ICubeExecutorDrillThroughItems;
Begin
    // Get repository
    mb := MetabaseClass.Active;
    // Get cube
    cube := mb.ItemById("OBJ13003").Open(NullAs ICubeInstance;
    // Get object for working with default cube destination
    dest := cube.Destinations.DefaultDestination;
    // Get cube selection
    selset := dest.CreateDimSelectionSet;
    For i := 0 To selset.Count - 1 Do
        selset.Item(i).SelectAll;
    End For;
    // Create an object for cube calculation
    executor := dest.CreateExecutor;
    // Prepare cube calculation
    executor.PrepareExecute(selset);
    // Prepare cube calculation with query drillthrough
    executor.PerformExecuteO(CubeInstanceDestinationExecutorOptions.DrillThrough);
    // Get collection of drillthrough elements on cube calculation
    dtItems := executor.DrillThrough;
    If dtItems.Count <> 0 Then
        For i := 0 To dtItems.Count - 1 Do
            // Display in the console window:
            Debug.WriteLine("Number of values in obtained drillthrough output matrix = " + dtItems.Matrix.ValueCount.ToString);
            Debug.WriteLine("SQL query:");
            Debug.WriteLine(dtItems.Item(i).Command.SQL);
            Debug.WriteLine("Number of data source fields = " + dtItems.Item(i).Dataset.Fields.Count.ToString);
        End For;
    Else
        Debug.WriteLine("Number of drillthrough elements = 0");
    End If;
End Sub UserProc;

After executing the example the console window displays SQL query of drillthrough element and the number of source fields.

Fore.NET Example

The requirements and result of the Fore.NET example execution match with those in the Fore example.

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

Public Shared Sub Main(Params: StartParams);
Var
    mb: IMetabase;
    cube: ICubeInstance;
    dest: ICubeInstanceDestination;
    executor: ICubeInstanceDestinationExecutor;
    selset: IDimSelectionSet;
    i: Integer;
    dtItems: ICubeExecutorDrillThroughItems;
Begin
    // Get repository
    mb := Params.Metabase;
    // Get cube
    cube := mb.ItemById["OBJ13003"].Open(NullAs ICubeInstance;
    // Get object for working with default cube destination
    dest := cube.Destinations.DefaultDestination;
    // Get cube selection
    selset := dest.CreateDimSelectionSet();
    For i := 0 To selset.Count - 1 Do
        selset.Item[i].SelectAll();
    End For;
    // Create an object for cube calculation
    executor := dest.CreateExecutor();
    // Prepare cube calculation
    executor.PrepareExecute(selset);
    // Prepare cube calculation with query drillthrough
    executor.PerformExecuteO(CubeInstanceDestinationExecutorOptions.cideoDrillThrough As Integer);
    // Get collection of drillthrough elements on cube calculation
    dtItems := executor.DrillThrough;
    If dtItems.Count <> 0 Then
        For i := 0 To dtItems.Count - 1 Do
            // Display in the console window:
            System.Diagnostics.Debug.WriteLine
            ("Number of values in obtained drillthrough resulting matrix = " + dtItems.Matrix.ValueCount.ToString());
            System.Diagnostics.Debug.WriteLine("SQL query:");
            System.Diagnostics.Debug.WriteLine(dtItems.Item[i].Command.SQL);
            System.Diagnostics.Debug.WriteLine
            ("Number of data source fields = " + dtItems.Item[i].Dataset.Fields.Count.ToString());
        End For;
    Else
        System.Diagnostics.Debug.WriteLine("Number of drillthrough elements = 0");
    End If;
End Sub;

See also:

ICubeInstanceDestinationExecutor