筛选器数组的 Azure 逻辑应用程序错误 ActionResultsSizeLimitExceeded

Azure Logic App error ActionResultsSizeLimitExceeded for filter array

我们创建了一个逻辑应用程序,在其中我们使用通用数据服务(即列表记录)从 CRM 获取记录。

这记录了在 For each 循环中使用过滤器数组的进一步过滤器。 for-each 循环是运行 对SQL 服务器的存储过程的结果和结果return 9000 多条记录。列出记录操作 return 是来自 CRM 的所有记录,在 foreach 循环中,我们通过添加条件和 return 结果来过滤记录。

对于为每条记录成功执行的每个循环,但在 运行 详细信息中,它显示过滤条件错误和逻辑应用程序失败并给出以下错误消息

{"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."}

根据你的错误信息,过滤器无法突破自身的限制,所以你无法使用过滤器来解决你的问题。

也许您可以在您的逻辑应用程序中使用 Inline Code 来过滤数组。在 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 逻辑应用工作流:

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;

顺便说一下,您需要将 integration account 添加到您的逻辑应用程序。