2016-06-28 42 views
0

我有一些數據進來,我需要計算流中每分鐘的部分值。以下是我的查詢在Azure流分析查詢中使用時間戳時出現錯誤

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) 

我得到一個錯誤,當我通過 添加時間戳vqt.arrayvalue.t

我輸入的數據是這樣的..

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

}

如果有人能幫助,這將是偉大的!

+0

您能否將其拆分爲多個步驟,使用TStreams在本地進行測試並嘗試隔離錯誤更多?之後,請粘貼您看到的錯誤消息。 –

回答

1

流中的單個事件只能有一個時間戳字段。你目前正在做的是爲這個事件中的每個單獨的數組值賦值時間戳。不幸的是,這目前不受支持。

可能的解決方法是將您的ASA作業分成兩部分。第一個不會使用TIMESTAMP BY,但會執行CROSS APPLY並將數組值作爲單個事件發送到中間事件中心。第二項工作將從那裏讀取,使用TIMESTAMP BY並應用其餘的邏輯。