2017-02-13 1 views
1

私は、avroメッセージのイベントハブ(このRawEventsを呼び出す)を使用しているストリーム分析ジョブを使用して、メッセージを変形/平坦化して別のイベントハブこのFormattedEventsを呼び出します)。Stream Analytics to Event Hub - 予期せずにイベントを連結する

RawEventsの各EventDataインスタンスは、より詳細なイベントの配列を持つ単一のトップレベルjsonオブジェクトで構成されています。これは不自然な例である:

[{ "イベント":[{ "Dataoneの":123.0、 "dataTwo":234.0、 "subEventCode":3、 "dateTimeLocal":1482170771、 "dateTimeUTC": 「messageTime」:2021「dateTimeLocal」:1482170771「dateTimeUTC」: 1482192371}]、「messageType」:「myDeviceType-Events」、「deviceID」 「: "MYDEVICE"、}]

ストリーム解析ジョブはビットマスクであり、結果を平坦化し、subEventCodeをアンパック。

{ "にmessageType": "myDeviceType-イベント"、 "デバイスID": "MYDEVICE"、イベントID:1、 "Dataoneの":123、 "datatwo":234、 "subeventcode結果は次のようになり0 "、" flag5 ":0、" flag6 ":0、" flag7 ":0、" flag8 ":0、" flag2 ":1、" flag3 " 0、 "flag1":0、 "flag1":0、 "flag12":0、 "flag13":0、 "flag14":0、 "flag15":0、 "flag16" "eventepochlocal": "2016-12-06T17:33:11.0000000Z"、 "eventepochutc": "2016-12-06T23:33:11.0000000Z"} {"messagetype": "myDeviceType-Event"、 "deviceid": " 2、 "dataone":456、 "datatwo":789、 "subeventcode":8、 "flag1":0、 "flag2":0、 "flag3":0、 "flag4":1、 「flag5」:0、「flag6」:0、「flag7」:0、「flag8」:0、「flag9」:0、「flag10」:0、「flag11」:0、「flag12」:0、「flag13」、 :0、 "flag14":0、 "flag15":0、 "flag16":0、 "eventepochlocal": "2016-12-06T17:33:11.0000000Z"、 "eventepochutc": "2016-12-06T23:33 :11.0000000Z "}

FormattedEventsイベントハブからメッセージをプルすると、2つのEventDataインスタンスが表示されることが予想されます。私が得ているのは、同じメッセージの両方の "平坦化された"イベントを持つ単一のEventDataです。これは、BlobストレージまたはData Lakeを対象とした場合には予​​想される動作ですが、イベントハブを対象とする場合は驚くべきものです。私の期待は、サービスバスに似た行動でした。

これが期待どおりの動作ですか?もしそうなら、強制的に動作させる設定オプションはありますか?

答えて

0

はい、これは現在予想される動作です。その目的は、EventHubメッセージ(EventData)に多数のイベントを送信しようとするとスループットを向上させることでした。

残念ながら、今日のこの動作を無効にする設定オプションはありません。試みる価値がある可能性のある方法の1つは、出力パーティションキーの概念をスーパーユニークに活用することです(つまり、この列をクエリに追加する - GetMetadataPropertyValue(ehInput、 "EventId"))。次に出力EventHubのASA設定でPartitionKeyとして "outputpk"を指定します。

それが役立つかどうか教えてください。

歓声 チェタン

+0

私たちは、あなたが言うように動作は、MSと設計であることが確認されました。個々のイベントに対処する場合は、サービスバスをターゲットにするか、手動でボディを分割する必要があります。少し失望しているが、そこに行く。 –

関連する問題