IMetaDictionaryLookup.GetKeysRaw

Синтаксис

GetKeysRaw(Attributes: Array;
           Dimensions: Array;
           Result: IMatrixModel;
           Options: Integer;
           Attribute: String);

Параметры

Attributes. Массив наименований атрибутов рядов;

Dimensions. Массив измерений ряда, соответствующих атрибутам;

Result. Матрица, в которую будут выгружены результата поиска;

Options. Признак того, что при поиске используется агрегатная функция;

Attribute. Наименование атрибута, значения которого будут помещены в матрицу Result.

Описание

Метод GetKeysRaw возвращает элементы базы данных временных рядов по заданным измерениям.

Комментарии

Массив Attributes должен содержать строковые значения, а Dimensions - значения типа Variant. Порядок наименований атрибутов в массиве Attributes должен соответствовать порядку измерений в массиве Dimensions, т.е. первый элемент массива Attributes задает наименование атрибута, а первый элемент массива Dimensions - измерение данного атрибута и т.д.

Количество измерений в результирующей матрице Result должна совпадать с количеством измерений в БД временных рядов, в которой выполняется поиск.

Для применения к значениям атрибута Attribute агрегатных функций используйте параметры Options и Attribute. Допустимые значения параметра Options:

Пример

Для выполнения примера в репозитории предполагается наличие БД временных рядов с идентификатором «TSDB», содержащей обязательные атрибуты временных рядов с идентификаторами: «COUNTRY» и «INDICATOR». Данные атрибуты являются ссылкой на справочник.

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

Sub UserProc;
Var
    MB: IMetabase;
    RubDesc: IMetabaseObjectDescriptor;
    RubrIn: IRubricatorInstance;
    DictInst: IMetaDictionaryInstance;
    MetaDLookup: IMetaDictionaryLookup;
    DictAtts: IMetaAttributes;
    Dims: Array[2Of Variant;
    Atts: Array[2Of String;
    Conditions: IOrmConditions;
    Cond: IOrmCondition;
    mf: MatrixFactory;
    mModel: IMatrixModel;
    Iter: IMatrixModelIterator;
    i: Integer;
Begin
    MB := MetabaseClass.Active;
    // Получаем БД временных рядов
    RubDesc := MB.ItemById("TSDB");
    RubrIn := RubDesc.Open(NullAs IRubricatorInstance;
    // Получаем справочник временных рядов
    DictInst := RubrIn.Facts;
    // Создаем объект для поиска по справочнику временных рядов
    MetaDLookup := DictInst.CreateLookup("");
    // Указываем измерения, по которым выполняется поиск
    DictAtts := DictInst.Dictionary.Attributes;
    Dims[0] := DictAtts.FindById("COUNTRY").ValuesObject.Open(NullAs IDimInstance;
    Dims[1] := DictAtts.FindById("INDICATOR").ValuesObject.Open(NullAs IDimInstance;
    // Задаем атрибуты временного ряда, соответствующие измерениям
    Atts[0] := "COUNTRY";
    Atts[1] := "INDICATOR";
    // Задаем условия поиска
    Conditions := MetaDLookup.CustomWhere;
    Cond := Conditions.Add;
    Cond.AttributeName := "COUNTRY";
    Cond.Value := 512;
    // Создаем матрицу, в которую будут выгружены результаты
    mf := New MatrixFactory.Create;
    mModel := mf.CreateMatrixModel(2);
    // Выполняем поиск
    MetaDLookup.GetKeysRaw(Atts, Dims, mModel, 1"MNEMO");
    // Выводим результаты в окно консоли
    Iter := mModel.CreateModelIterator;
    Iter.Move(IteratorDirection.First);
    i := 0;
    While Iter.Valid Do
        Debug.WriteLine(Iter.Value + " ");
        Iter.Move(IteratorDirection.Next);
    End While;
End Sub UserProc;

Результат выполнения примера: будет выполнен поиск временных рядов по измерениям атрибутов «COUNTRY» и «INDICATOR». Условие поиска: значение атрибута «COUNTRY» для временного ряда равняется «512». Результаты поиска будут выведены в окно консоли.

См. также:

IMetaDictionaryLookup