Azure 逻辑应用程序 - 按指定列对 CSV 进行排序

Azure Logic App - order CSV by specified column

我在 Azure 中有一个逻辑应用程序,它有一个 'Create CSV table' 步骤。 'Create CSV table' 步骤的输入来自前面的 'Liquid Transform JSON' 步骤。我想按特定列对 CSV 文件进行排序。有什么方法可以让我在 'Create CSV table' 步骤中轻松做到这一点?或者,我是否需要先以某种方式在 'Liquid Transform JSON' 和 'Create CSV table' 步骤之间转换 JSON?

'Liquid Transform JSON'步骤输出的JSON是这样的格式,我想按UTCTimeStamp升序排序:

[
  {
    "TransactionType": "Alert",
    "UTCTimeStamp": "2022-05-16T03:29:23.704735Z"
  },
  {
    "TransactionType": "Alert",
    "UTCTimeStamp": "2022-05-15T23:58:14.867664Z"
  }
]

我尝试在 Liquid 模板中进行排序,但正如所描述的那样 here 该排序适用于基本数据,但似乎没有办法按特定 JSON 属性 在 Liquid 模板中,当 JSON 是一组更复杂的对象时。

您可以在 'Liquid Transform JSON' 和 'Create CSV table' 操作之间使用“Execute JavaScript Code”操作对 JSON 进行排序。

例如如果您想按名称 -

从以下 JSON 数组中对“内容”数组进行排序
{
  "content": [
    {
      "Identifier": "1",
      "Name": "B"
    },
    {
      "Identifier": "2",
      "Name": "A"
    }
  ]
}

您可以使用以下 JavaScript 代码:

var arr = workflowContext.actions.Compose.outputs.content;
return arr.sort(GetSortOrder());

function GetSortOrder() {    
    return function(item1, item2) {
        return (item2.Name < item1.Name) ? 1 : (item1.Name < item2.Name) ? -1 : 0;    
    }    
}

结果:

[
  {
    "Identifier": "2",
    "Name": "A"
  },
  {
    "Identifier": "1",
    "Name": "B"
  }
]

请参阅 ,其中显示了如何使用 'Execute JavaScript Code' 操作访问和排序上一步的 JSON 输出。

为了按我在问题中提供的示例数据结构中的 UTCTimeStamp 值升序排序,我在 Liquid_Transform_JSON 步骤之后的 'Execute JavaScript Code' 操作中使用了以下内容:

var arr = workflowContext.actions.Liquid_Transform_JSON.outputs.body;
return arr.sort(GetSortOrder());

function GetSortOrder() {    
    return function(item1, item2) {
        return Date.parse(item1.UTCTimeStamp) - Date.parse(item2.UTCTimeStamp) 
    }    
}