2016-06-28 13 views
0

Ich habe einige Daten kommen und ich muss die Teile pro Minute Wert im Stream berechnen. Hier finden Sie meine AnfrageIn Azure Stream Analytics Query Ich erhalte einen Fehler bei der Verwendung von Timestamp von

WITH first AS (
SELECT 
    TS.ArrayIndex, 
    TS.ArrayValue.FQN, 
    TS.ArrayValue.vqts 
FROM 
    [EventHubInput] as hub 
CROSS APPLY GetArrayElements(hub.timeseries) AS TS) 

SELECT first.FQN ,(max(cast(vqt.arrayvalue.v as BIGINT))-(min(cast(vqt.arrayvalue.v as BIGINT)))) AS PPM 
FROM first 
CROSS APPLY GetArrayElements(first.vqts) AS vqt where first.FQN like '%Production%' and vqt.arrayvalue.q = 192 
timestamp by 
vqt.arrayvalue.t 
group by 
first.FQN, TumblingWindow(minute, 1) 

Ich erhalte eine Fehlermeldung, wenn ich Zeitstempel hinzufügen, indem vqt.arrayvalue.t

Meine Eingangsdaten wie folgt aussieht ..

{ 
    "timeSeries": [ 
    { 
     "fqn":"MyEnterprise.Gateways.GatewayE.CLX.Tags.StateBasic", 
      "vqts":[ 
        { 
        "v": "" , 
        "q": 192 , 
        "t":"2016-06-24T16:39:45.683+0000" 
        } 
     ] 
    },    { 
     "fqn":"MyEnterprise.Gateways.GatewayE.CLX.Tags.ProductionCount", 
      "vqts":[ 
        { 
        "v": 264 , 
        "q": 192 , 
        "t":"2016-06-24T16:39:45.683+0000" 
        } 
     ] 
    },    { 
     "fqn":".Gateways.GatewayE.CLX.Tags.StateDetailed", 
      "vqts":[ 
        { 
        "v": "" , 
        "q": 192 , 
        "t":"2016-06-24T16:39:45.683+0000" 
        } 
     ] 
    }   ] 

}

Es wäre toll, wenn jemand helfen könnte !!

+0

Können Sie es bitte in mehrere Schritte teilen, lokal mit TStreams testen und versuchen, den Fehler mehr zu isolieren? Danach fügen Sie bitte die Fehlermeldung ein, die Sie sehen. –

Antwort

1

Ein einzelnes Ereignis aus dem Stream kann nur ein Zeitstempelfeld haben. Was Sie gerade tun, ist die Zeitstempel für jeden einzelnen Array-Wert von diesem Ereignis. Leider wird dies zur Zeit nicht unterstützt.

Eine mögliche Problemumgehung besteht darin, Ihren ASA-Job in zwei Teile aufzuteilen. Der erste wird TIMESTAMP BY nicht verwenden, aber CROSS APPLY ausführen und Array-Werte als einzelnes Ereignis an den intermediären Event-Hub senden. Der zweite Job liest von dort aus, benutzt TIMESTAMP BY und wendet den Rest der Logik an.