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)
}
}
我在 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"
}
]
请参阅
为了按我在问题中提供的示例数据结构中的 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)
}
}