2016-06-28 8 views
0

データが入ってきているため、ストリームの最小値のパーツを計算する必要があります。以下は、私がAzure Stream Analyticsクエリでタイムスタンプを使用しているときにエラーが発生しました

私の入力データは次のようになりますvqt.arrayvalue.t でタイムスタンプを追加するとき、私はエラーを取得する私のクエリ

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) 

..です

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

複数のステップに分割して、ローカルでTStreamをテストし、エラーをさらに分離してください。その後、表示されるエラーメッセージを貼り付けてください。 –

答えて

1

ストリームからの1つのイベントは、1つのタイムスタンプフィールドしか持つことができません。現在実行していることは、このイベントからの個々の配列値ごとにタイムスタンプを割り当てることです。残念ながら、これは現在サポートされていません。

考えられる回避策は、ASAジョブを2つに分割することです。最初のものはTIMESTAMP BYを使用しませんが、CROSS APPLYを実行し、個々のイベントとして配列値を中間イベントハブに送信します。 2番目のジョブはそこから読み取り、TIMESTAMP BYを使用して残りのロジックを適用します。