IStandardCubeDimension.QueryStrategy

Синтаксис Fore

QueryStrategy: ICubeDimensionQueryStrategy;

Синтаксис Fore.NET

QueryStrategy: Prognoz.Platform.Interop.Cubes.ICubeDimensionQueryStrategy;

Описание

Свойство QueryStrategy возвращает параметры стратегии фильтрации по данному измерению куба.

Комментарии

Стратегия фильтрации определяет, каким образом будет формироваться запрос на извлечение данных в зависимости от отметки измерения. Более подробное описание о формировании запроса на выборку данных в зависимости от выбранной стратегии фильтрации представлено в подразделе «Измерения куба: Свойства измерения».

Пример Fore

Для выполнения примера предполагается наличие стандартного куба с идентификатором "STD_CUBE". Подключите системные сборки: Cubes, Metabase.

Sub UserProc;
Var
    MB: IMetabase;
    Cube: IStandardCube;
    Dims: IStandardCubeDimensions;
    Dim: IStandardCubeDimension;
    Strategy: ICubeDimensionQueryStrategy;
Begin
    Mb := MetabaseClass.Active;
    Cube := MB.ItemById("STD_CUBE").Edit As IStandardCube;
    //Не использовать подзапросы при извлечении данных из первого источника данных
    Cube.Datasets.Item(0).UseSubqueryOptimization := False;
    //Настройка стратегий фильтрации для всех измерений
    Dims := Cube.Dimensions;
    For Each Dim In Dims Do
        Strategy := Dim.QueryStrategy;
        //Фильтровать в зависимости от количества отмеченных элементов и использовать временную таблицу
        Strategy.FilterMethod := CubeDimensionFilterMethod.QuantityBasedUseTempTable;
        //Количество элементов, в зависимости от которого изменяется запрос
        Strategy.RatioOrQuantity := 5;
    End For;
    (Cube As IMetabaseObject).Save;
End Sub UserProc;

После выполнения примера в кубе будет изменена стратегия фильтрации по всем измерениям. Способ фильтрации элементов будет изменяться в зависимости от количества элементов в отметке, порог изменения способа фильтрации - 5 элементов. Также при формировании запроса к первому источнику данных не будут использоваться подзапросы.

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

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

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    Cube: IStandardCube;
    Dims: IStandardCubeDimensions;
    Dim: IStandardCubeDimension;
    Strategy: ICubeDimensionQueryStrategy;
Begin
    Mb := Params.Metabase;
    Cube := MB.ItemById["STD_CUBE"].Edit() As IStandardCube;
    //Не использовать подзапросы при извлечении данных из первого источника данных
    Cube.Datasets.Item[0].UseSubqueryOptimization := False;
    //Настройка стратегий фильтрации для всех измерений
    Dims := Cube.Dimensions;
    For Each Dim In Dims Do
        Strategy := Dim.QueryStrategy;
        //Фильтровать в зависимости от количества отмеченных элементов и использовать временную таблицу
        Strategy.FilterMethod := CubeDimensionFilterMethod.dfmQuantityBasedUseTempTable;
        //Количество элементов, в зависимости от которого изменяется запрос
        Strategy.RatioOrQuantity := 5;
    End For;
    (Cube As IMetabaseObject).Save();
End Sub;

См. также:

IStandardCubeDimension