2017-04-08 55 views
0

我正在设置流分析和调用Azure机器学习之间的实时流水线来进行预测。流分析 - 在JavaScript函数中添加换行符

我的问题是模型具有不同数量的输入和输出行,所以我将所有事件组合在一起,然后将其作为字符串发送到AML。 (使用collect()函数,然后在收集的事件上应用JSON.stringify)

[{“list”:“[{\”date \“:\”2017-03-31T06:22:00.0000000Z \ ,\ “VAR1 \”:1907,\ “VAR2 \”:1925,\ “VAR3 \”:1951},{\ “日期\”:\ “2017-03-31T06:23:00.0000000Z \”,\” var1 \“:1924,\”var2 \“:1978,\”var3 \“2017}]”}]

要在AML中通过Web服务解析它,我们需要添加一个固定字符串和新行像

JSON_str

[{ “清单”: “[{\” 日期\ “:\” 2017-03-31T06:22:00.0000000Z \”,\ “VAR1 \”:1907,\ “VAR2 \”:1925,\ “VAR3 \”:1951},{\ “日期\”:\ “2017-03-31T06:23:00.0000000Z \”, \“var1 \”:1924,\“var2 \”:1978,\“var3 \”2017}]“}]

这样它会被解释为一个新的数据行并且固定的字符串将会被解释作为标题。

我试图

STR1 = [{ “列表” 的所有组合: “[{\” 日期\ “:\” 2017-03-31T06:22:00.0000000Z \ “\” VAR1 \ “:1907,\” VAR2 \ “:1925,\” VAR3 \ “:1951},{\” 日期\ “:\” 2017-03-31T06:23:00.0000000Z \”,\ “VAR1 \”: 1924年,\ “VAR2 \”:1978,\ “VAR3 \” 2017}]“}]

新STR = ”JSON_STR“ + ”\ r \ n“ 个+ STR1

但它被添加作为纯文字(\ r \ n)而不是换行符。

预计Inputin AML: (请忽略列名的变化,因为我加入的问题时,已经简化了变量列表 但基本上我训练模型假设列名,其数据的第1行] http://i67.tinypic.com/16izi29.jpg

回答

1

我在我这边测试了这个,当你在Azure Stream Analytics中使用JavaScript时'\ r \ n'创建了一个新的行,如预期的那样。

但是,您可能希望确保使用文本可视化工具来查看格式化文本。查看原始数据仍然会显示\ r \ n。

谢谢!

JS(Azure Stream Analytics)

+0

感谢您的反馈意见。我正在查看显示\ r \ n的原始输出。但是我仍然有一个问题,那就是将所需格式的输出转换为AML。我训练AML模型的方式是预期1行1列作为输入数据。列标题作为字符串标题和行值作为数据(上图所示)。 – Sailaja

0

您的json字符串中存在一些问题。

  1. 缺少符号:\"var3\"2017中,它应该是\"var3\":2017
  2. list属性值"[{\"date\":\"2017-03-31T06:22:00.0000000Z\",\"var1\":1907,\"var2\":1925,\"var3\":1951},{\"date\":\"2017-03-31T06:23:00.0000000Z\",\"var1\":1924,\"var2\":1978,\"var3\"2017}]"不是一个有效的json数组,只是一个字符串,所以你需要将它转换为如下。

    str1= [{"list":"[{\"date\":\"2017-03-31T06:22:00.0000000Z\",\"var1\":1907,\"var2\":1925,\"var3\":1951},{\"date\":\"2017-03-31T06:23:00.0000000Z\",\"var1\":1924,\"var2\":1978,\"var3\":2017}]"}] 
    str1 = str1.replace('"[','[').replace(']"',']') 
    

然后你就可以通过var json1 = JSON.parse(str)解析它作为JSON对象和字符串化JSON对象字符串VAR var str1 = JSON.stringify(json1)

希望它有帮助。