2017-04-08 1 views
0

Je suis en train de configurer un pipeline en temps réel entre Stream Analytics et l'appel d'Azure Machine Learning pour effectuer une prédiction. Mon problème est le modèle a un nombre différent de lignes d'entrée et de sortie, donc je combine tous les événements, puis envoyer en tant que chaîne dans AML. (en utilisant la fonction collect(), puis en appliquant JSON.stringify aux événements collectés)Stream Analytics - Ajouter une nouvelle ligne dans la fonction JavaScript

[{"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}]"}]

Pour être analysé dans AML via un service Web, nous devons ajouter une chaîne fixe et une nouvelle ligne comme

JSON_str

[{ "liste": "[{\" la 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}] "}]

de sorte qu'elle soit interprétée comme une nouvelle ligne de données et que la chaîne fixe soit toujours interprétée comme en-tête.

J'ai essayé toutes les combinaisons de

str1 = [{ "liste": "[{\" la 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}] "}]

nouvelle str = "JSON_STR" + "\ r \ n" + Str1

mais il est ajouté aussi clair texte (\ r \ n) et non en tant que nouvelle ligne.

attendu Inputin AML: (S'il vous plaît ignorer le changement dans les noms de colonnes comme je l'avais simplifié la liste des variables lors de l'ajout question Mais au fond je me suis entraîné le modèle en supposant un nom de colonne et ayant une ligne de données] http://i67.tinypic.com/16izi29.jpg

.

J'apprécie vraiment votre aide car il me manque quelque chose de spécifique à Stream Analytics

Répondre

1

J'ai testé cela de mon côté, et '\ r \ n' crée une nouvelle ligne comme prévu lorsque vous utilisez JavaScript dans Azure Stream Analytics

Toutefois, vous pouvez être sûr d'utiliser un visualiseur de texte pour voir le texte mis en forme. Regarder les données brutes montrera toujours \ r \ n.

Merci!

JS (Azure flux Analytics)

+0

Merci pour vos commentaires. Je regardais la sortie brute qui a montré \ r \ n. Mais une question que j'ai encore est que sur la conversion de la sortie dans le format requis pour AML. La façon dont j'ai formé le modèle AML est d'attendre 1 ligne et 1 colonne comme données d'entrée. Avec en-tête de colonne comme en-tête de chaîne et valeur de ligne comme les données (image ci-jointe ci-dessus). – Sailaja

0

Il y a une question dans votre chaîne JSON.

  1. manquant symbole : dans la chaîne \"var3\"2017, il devrait être \"var3\":2017.
  2. La valeur de propriété 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}]" n'est pas un tableau json valide, juste une chaîne, donc vous devez le convertir comme ci-dessous.

    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(']"',']') 
    

Ensuite, vous pouvez l'analyser comme objet JSON via var json1 = JSON.parse(str) et stringify l'objet JSON chaîne var var str1 = JSON.stringify(json1).

Espérons que ça aide.