GetTreeElementsResult SetExp(
ExpressionId tExpressionId,
TermProviderId tTermProviderId,
ExpOperations tOperations,
ExpressionArgs tExpressionAgrs)
tExpressionId. Моникёр выражения, для которого выполняется операция.
tTermProviderId. Моникёр провайдера, который будет обрабатывать термы.
tOperations. Параметры выполнения операции.
tExpressionAgrs. Термы и параметры термов, используемые при выполнении операции.
Операция SetExp используется для формирования термов по передаваемой информации.
Данная операция позволяет по передаваемой информации об элементах измерений, рядах, функциях (математических, статистических и других), операциях (арифметических, логических и других) получить термы, которые используются для формирования конечных выражений. Полученные выражения используются ядром «Форсайт. Аналитическая платформа» для вычисления значений.
Для выполнения операции необходимо в tExpressionId и tTermProviderId указать моникёры выражения, для которого формируются термы, и провайдера, который обрабатывает термы и формирует их формулу. Моникёры формируются в зависимости от объекта, с редактором выражения которого осуществляется работа. В общем виде моникёры имеют следующее представление: «моникёр объекта»!«префикс объекта»!Trans!«тип трансформации»!«ключ трансформации»!«постфикс».
Где:
«моникёр объекта». Моникёр объекта, в котором осуществляется работа с выражением. Работа с выражениями может осуществляться в объектах задачи ETL, в аналитической области данных, при работе со страницами регламентных отчетов, экспресс-отчетов, рабочих книг, в мастерах кубов, справочников и таблицы.
«префикс объекта». Префикс, указывающий тип объекта. Допустимые значения:
Eax. Экспресс-отчеты;
Laner. Рабочие книги;
«тип трансформации». Зависит от назначения формируемого выражения. Допустимые значения:
Calc. Выражение для вычисления значения;
Sort. Выражение сортировки;
Filter. Выражение фильтрации.
«ключ трансформации». Ключ трансформации может быть получен в метаданных того объекта, с которым осуществляется работа.
«постфикс». Добавляется в зависимости от указываемого моникера. Допустимые значения:
Exp. Для моникера tExpressionId;
TermProv. Для моникера tTermProviderId.
При работе с задачей ETL используется следующий моникёр: «моникёр задачи ETL»!Objects!«индекс объекта»!Exp«Индекс входа/выхода».
При работе с формулами вычисляемого куба используется следующий моникёр: «моникёр экземпляра вычисляемого куба»!keyDim1.element0|keyDim2.element1|keyDimn.elementm!ExpN, где keyDim1, keyDim2, keyDimn - ключи измерений; element0, element1, elementm - индексы элементов в измерениях. Ключи измерений и индексы элементов формируют координату, по которой задаётся формула в вычисляемом кубе. ExpN - индекс формулы, если в кубе включено управление периодом действия формул. Индексация начинается с 0.
При настройке фильтрации для реляционного объекта: «моникёр из поля cachedDatasetId»!FILTER.
В tOperations указываются параметры выполнения операции, а в tExpressionAgrs термы и параметры для формирования термов, которые будут использоваться при выполнении операции.
Результатом выполнения операции будут сформированные внутренние представления термов, которые могут использоваться для составления выражений, или информация об ошибках, если были указаны некорректные параметры термов.
Ниже приведен пример использования операции SetExp для обработки набора термов, а также формирования нового терма по информации об элементе в измерении. В запросе передается набор термов и параметры для создания нового терма. В ответе приходят сформированные внутренние представления термов и информация о новом терме.
{ "SetExp" : { "tExpressionId" : { "id" : "S1!M!S!E2!Eax!Trans!Calc!18590!Exp" }, "tTermProviderId" : { "id" : "S1!M!S!E2!Eax!Trans!Calc!18590!TermProv" }, "tOperations" : { "meta" : { "Terms" : "true", "IsValid" : "true", "NewTerm" : "true" }, "metaGet" : { "Terms" : "true", "IsValid" : "true", "bErrorMessage" : "true", "bErrorPosition" : "true", "NewTerm" : "true" } }, "tExpressionAgrs" : { "Terms" : { "terms" : { "Item" : [ { "sText" : "{Первый элемент[t]}" }, { "sText" : "+" }, { "sText" : "{Второй элемент[t]}" } ] } }, "NewTermParams" : { "it" : [ { "n" : "tag", "v" : "eax.de" }, { "n" : "key", "v" : "116" }, { "n" : "elKey", "v" : "3" } ] }, "InsertNewTermAt" : "0" } } }
{ "SetExpResult" : { "Terms" : { "terms" : { "Item" : [ { "bIsLiteral" : "0", "sText" : "{Первый элемент[t]}", "sFormula" : "@_18644:0[]", "sParseableText" : "{Первый элемент[t]}" }, { "bIsLiteral" : "1", "sText" : " + ", "sFormula" : " + ", "sParseableText" : " + " }, { "bIsLiteral" : "0", "sText" : "{Второй элемент[t]}", "sFormula" : "@_18645:0[]", "sParseableText" : "{Второй элемент[t]}" } ] } }, "bIsValid" : "1", "NewTerm" : { "bIsLiteral" : "0", "sText" : "Третий элемент", "sFormula" : "@__1" } } }
public static ExpressionResult SetExpression(EaxId moniker, ulong transformKey)
{
var somClient = new SomPortTypeClient(); //Прокси-объект для выполнения операций
//Параметры выполнения операции
var tSet = new SetExp()
{
tExpressionId = new ExpressionId() { id = moniker.id + "!Eax!Trans!Calc!" + transformKey.ToString() + "!Exp" },
tTermProviderId = new TermProviderId() { id = moniker.id + "!Eax!Trans!Calc!" + transformKey.ToString() + "!TermProv" },
tOperations = new ExpOperations()
{
meta = new ExpMetaOperations()
{
Terms = true,
NewTerm = true,
IsValid = true
},
metaGet = new ExpMetaOperationsPattern()
{
Terms = true,
NewTerm = true,
IsValid = true,
bErrorMessage = true,
bErrorPosition = true
}
},
tExpressionAgrs = new ExpressionArgs()
{
Terms = new ExpressionTerms()
{
terms = new ExpressionTerm[]
{
new ExpressionTerm() { sText = "{Первый элемент[t]}" },
new ExpressionTerm() { sText = "+" },
new ExpressionTerm() { sText = "{Второй элемент[t]}" }
}
},
NewTermParams = new TreeTermParam[]
{
new TreeTermParam() { n = "tag", v = "eax.de" },
new TreeTermParam() { n = "key", v = "116" },
new TreeTermParam() { n = "elKey", v = "3" },
},
InsertNewTermAt = 0
}
};
//Обработка термов
var result = somClient.SetExp(tSet);
return result;
}
См. также: