Azure Logic App从CSV文件计算列的总和

问题描述

我正在使用Azure Logic应用程序从存储帐户中获取Blob内容。 Blob文件位于.CSV文件中。 CSV文件由几列和多行组成。该文件基本上是一个发票文件,由名为“ PreTaxCost”的列组成。我需要计算CSV文件中“ PreTaxCost”列中所有条目的总和,以获得总费用。

Screenshot of the csv file (opened with notepad++)

关于如何使用Azure Logic应用程序实现此目标的任何想法吗? 谢谢!

解决方法

如果要在Azure逻辑应用程序中将csv转换为json,可以使用Execute JavaScript Code操作来运行js代码以实现它。 JS代码如下

function csvToJson(csv){

  var lines=csv.split("\r\n");

  var result = [];

  var headers=lines[0].split(",");
  for(var i=0; i<headers.length; i++){
    //remove space
    headers[i]=headers[i].split(" ").join("")
   
  }
  for(var i=1;i<lines.length;i++){

      var obj = {};
      var currentline=lines[i].split(",");

      for(var j=0;j<headers.length;j++){
          obj[headers[j]] = currentline[j];
      }

      result.push(obj);

  }

  return JSON.stringify(result);;
}
var content = "<csv content>";

var json = JSON.parse(csvToJson(content));
var sum = 0;

json.forEach(item=>{
    sum = sum + parseInt(item.PreTaxCost);
});
return sum;

有关更多详细信息,请参阅herehere

,

根据我们的对话和您的要求。由于在JS内联代码中添加数字时无法解决问题,因此请提供以下添加数字步骤供您参考:

1。。在JS内联代码操作中删除代码的最后几行,直接返回json

2。。初始化两个变量sumtempItem

enter image description here

3。。使用“对于每个”从JS内联代码操作中循环Result,并在“对于每个”循环中设置变量操作。

enter image description here

4。fx add(...)的表达式为add(variables('tempItem'),float(items('For_each')?['PreTaxCost']))。如果您的“对于每个”循环名为For each 2,则表达式应为add(variables('tempItem'),float(items('For_each_2')?['PreTaxCost']))

5。。请不要忘记启用Concurrency Control,并将Degree of Parallelism设置为1。然后运行逻辑应用程序,您可以获得求和结果。