UseMultiAttrTable: Boolean;
UseMultiAttrTable: Boolean;
The UseMultiAttrTable property determines whether a single common temporary table is used to store values of attributes, by which dimension connection is made.
The property is relevant when the following conditions are satisfied:
A dimension is connected with a data source by two or more attributes.
Filtering strategy is set for the dimension, and the method with the use of temporary tables is selected.
When a cube data extraction query is generated, nested queries are generated that extract the required data (attribute values) by dimension elements. If the UseMultiAttrTable property is set to True, attribute values are first collected into one temporary table, then a nested query to this table is generated. Attribute values are collected only for the elements selected in the dimension. If there are several dimensions in the cube, which are connected by several attributes, a separate temporary table is created for each dimension.
The property is set to False by default, attribute values are first collected in various temporary tables (a separate temporary table for each attribute), then a nested query is generated to these tables.
Executing the example requires that the repository contains a standard cube with the STD_CUBE identifier. In the cube structure, one dimension is connected by two attributes, the Filter Subject According to the Selection Size filtering method is also selected for this dimension; selection size is 50%, and the checkbox for using temporary tables is selected.
Add links to the Cubes and Metabase system assemblies.
Sub UserProc;
Var
MB: IMetabase;
Cube: IStandardCube;
CubeDest: IStandardCubeDestination;
Begin
MB := MetabaseClass.Active;
Cube := MB.ItemById("STD_CUBE").Edit As IStandardCube;
CubeDest := Cube.Destinations.Item(0);
CubeDest.UseMultiAttrTable := True;
(Cube As IMetabaseObject).Save;
End Sub UserProc;
On executing the example it is required that a single common temporary table must be used to store dimension attribute values on generating a data extraction query.
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.Metabase;
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
Cube: IStandardCube;
CubeDest: IStandardCubeDestination;
Begin
MB := Params.Metabase;
Cube := MB.ItemById["STD_CUBE"].Edit() As IStandardCube;
CubeDest := Cube.Destinations.Item[0];
CubeDest.UseMultiAttrTable := True;
(Cube As IMetabaseObject).Save();
End Sub;
See also: