2

Ich versuche, eine Logik-App zu erstellen, die Daten in eine SQL-Datenbank einfügt. Die Daten stammen aus dem Stream Analytics-Job und werden in einem Service Bus-Thema ausgegeben, das in Logic Apps im Service Bus-Trigger verwendet wird.JSON in Logic App von Stream Analytics analysieren -> Service Hub -> Logik-Anwendungen

Um die Eigenschaften der Zeile eingefügt eingefügt (können sagen, dass es nur eine Spalte ‚Name‘ hat), habe ich festgestellt, dass diese folgende Syntax arbeiten soll mit:

"body": { 
      "Name": "@{json(decodeBase64(triggerBody()['ContentData'])).Name}" 
    }, 

der Nachrichtentext bereitgestellt enthält eine Eigenschaft 'Name'

jedoch erhalten folgende ich Fehlermeldung, wenn diese ausgeführt wird:

{ "Code": "InvalidTemplate", "message": "Kann nicht Template-Sprache Ausdrücke in Aktion 'Insert_row' Eingänge in Zeile‚ verarbeiten 1 'und Spalte' 2017 ':' Die Template-Sprachfunktion 'json' ist nicht gültig. Der angegebene Wert '@ \ u0006string \ b3http: //schemas.microsoft.com/2003/10/Serialization/ {\ "time \ ": \" 2016-05-25T10: 29: 17.4953250Z \ ", \" Name \ ":" Y-Achse \ ", \" Wert \ ": 81.0, \" Datum \ ": \" 2016- 05-25T10: 29: 17.4953250 \ ", \" EventProcessedUtcTime \ ": \" 2016-05-25T10: 29: 17.5525449Z \ ", \" PartitionId \ ": 2, \" EventEnqueuedUtcTime \ ": \" 2016-05 -25T10: 29: 17.2220000Z \ "} \ u0001 'kann nicht analysiert werden:' Unerwartetes Zeichen beim Parsen von Wert gefunden: @. Pa th '', Zeile 0, Position 0 '. Bitte beachten Sie https://aka.ms/logicexpressions#json für die Nutzung Details. '. "}

So wie es scheint, dass der Inhalt in einem anderen Umschlag eingeschlossen ist, die json Parsing verhindert zu arbeiten.

1) Jede einfache Art und Weise, wie zu umgehen das?

2) Ist das nicht eine solche Integration alle innerhalb von Microsoft-Stack soll nur um ohne diese spöttischen arbeiten?

Danke, Stefan

+0

Haben Sie das auf eine nicht-hacky Weise funktioniert? – lucuma

Antwort

1

Danke, dass Sie dies gemeldet haben, Sie haben recht, es sollte einfach funktionieren. Es gibt ein bekanntes Problem, bei dem der JSON von ASA ServiceBus in einen XML-Header eingebunden wird. Es wird in naher Zukunft angesprochen, kann aber kein bestimmtes Datum angeben. Könnten Sie es bitte bis dahin umgehen (vielleicht Teilstring verwenden/ersetzen)?

prost, Chetan

+0

Das Problem ist behoben, sehen Sie sich die andere Antwort unten an, wie Sie sie für Ihre Arbeit aktivieren können. – Chetan

3

mit den begrenzten String-Funktionen in ihm Workflow-Definition Sprache, die ich zum Entfernen der zusätzlichen Saiten

@{json(substring(replace(decodeBase64(triggerBody()['ContentData']),'@string3http://schemas.microsoft.com/2003/10/Serialization/��', ''),0,sub(length(replace(decodeBase64(triggerBody()['ContentData']),'@string3http://schemas.microsoft.com/2003/10/Serialization/��', '')),1))).fieldname} 

gibt es einen besseren Weg, um eine langen umständliche Art und Weise zu verwenden, zu tun hatte, Dies

+0

Ich habe es versucht, aber nicht auf meiner. –

1

Entschuldigung für die Verzögerung bei der Rückkehr, dieses Problem ist jetzt behoben. Es wird unter einer neuen Kompatibilitätsstufe (1.1) exponiert, um bestehende Lösungen zu vermeiden. Bitte benutzen Sie diese URL, um Ihren Job mit der Kompatibilitätsstufe 1.1 zu konfigurieren und versuchen Sie es.

Prost!

+0

Ich erstelle meine ASA-Instanzen über das PowerShell-Cmdlet, wie setze ich von dort aus einen "Kompatibilitätslevel 1.1"? – Shrulik

+0

Ich habe Microsoft diesbezüglich kontaktiert und es gibt einige Probleme mit dieser Lösung. Dieser "Kompatibilitätsmodus" befindet sich noch in der Vorschau und enthält einige weitere Änderungen am Verhalten von SA, und weitere Änderungen sind vor GA möglich. In Bezug auf meinen ursprünglichen Kommentar, angeblich "compatibilityLevel": 1.1, sollte die ARM-Vorlage funktionieren, hat es nicht wegen der anderen Probleme getestet. – Shrulik