#azure-logic-apps #common-data-service
#azure-logic-apps #общая служба данных
Вопрос:
Мы создали одно логическое приложение, в котором мы извлекали записи из CRM, используя общую службу данных, т.Е. Список записей.
При этом записывается дальнейший фильтр с использованием массива фильтров в для каждого цикла. Для каждого цикла выполняется результат хранимой процедуры SQL Server, и результат возвращает более 9000 записей. Действие записи списка возвращает все записи из CRM, и в цикле foreach мы фильтруем записи, добавляя условия, и возвращаем результат.
Для каждого цикла, выполняемого для каждой записи успешно, но в деталях запуска, отображается ошибка в условиях фильтрации и сбой приложения логики и выдается следующее сообщение об ошибке
{"code":"ActionResultsSizeLimitExceeded","message":"The action 'Filter_GSL_Status_by_Code' was executed for '9069' iterations resulting in an aggregated result size that exceeded the maximum value '209715200' bytes allowed. Please reduce the number of iterations to ensure that the aggregated results size is less than '209715200' bytes."}
Комментарии:
1. Кажется, что фильтр выполнялся слишком много раз. Каковы данные фильтра?
2. Да, массив фильтров, выполняемый для каждой записи для каждого цикла и для каждого цикла, выполняется несколько раз, т.Е. В настоящее время мы получаем результирующие наборы из более чем 9000 записей из процедуры хранения
3. Я не понимаю … какое ограничение мы нарушаем? Какой размер агрегированного результата?
4. В вашем сообщении об ошибке указано максимальное значение размера агрегированного результата, и его размер равен
209715200
байтам.5.
Aggregated result size
похоже, это размер результата после операции фильтрации
Ответ №1:
Согласно вашему сообщению об ошибке, фильтр не может преодолеть свои собственные ограничения, поэтому вы не можете использовать фильтр для решения своей проблемы.
Возможно, вы можете использовать встроенный код в своем приложении logic для фильтрации массива. Внутри Inline Code
вам нужно использовать javascript.
Например
Массив:
[
{
"testKey1": "testValue1",
"testKey2": "testValue2",
"testKey3": 1
},
{
"testKey1": "testValue11",
"testKey2": "testValue22",
"testKey3": 2
},
{
"testKey1": "testValue3",
"testKey2": "testValue3",
"testKey3": 3
},
{
"testKey1": "testValue4",
"testKey2": "testValue4",
"testKey3": 4
}
]
Рабочий процесс приложения Azure logic:
Js-код:
var arr = <your-array>;
var resultArr = [];
for(var i=0; i<arr.length; i ){
var item = arr[i];
var key3 = item.testKey3;
if(key3 > 2){
resultArr.push(item);
}
}
return resultArr;
Кстати, вам необходимо добавить учетную запись интеграции в ваше приложение logic.
Комментарии:
1. Или
return workflowContext.actions.Compose.outputs.filter(x => x.testKey3 > 2)