これは私の最後の質問へのフォローアップです。設定は、StreamInsight を使用して時系列予測を行っているということです。
そこで与えられた説明を拡張してx_n
、入力ストリームで示します。この例のために、10 回の観測ごとに 10 個先の値を予測すると仮定します。これらの予測を と呼びますp_n
。シリーズのインデックスは時間に対応するため、最初のインデックスは にp_n
なりますp_11
。
だから私たちは持っています
x_1, x_2, ..., x_10 --> p_11, p_12, ..., p_20
x_11, x_12, ..., x_20 --> p_21, p_22, ..., p_30
etc.
入力ストリームからを収集するユーザー定義のストリーム演算子があり、十分なイベントがあると、そのサイクルx_n
のすべてを吐き出します。p_n
TXPower275 は、これが合理的な戦略であることを確認しました。
次のステップは、予測を実際の値と比較することです。このために、私は 2 つのストリームに参加したいと思いました。参加はイベントのタイムスタンプで機能するため、タイムスタンプを正しく並べる必要があります。
(余談ですが、ポイントイベントがありますが、短い間隔でインターバルイベントを使用して、結合のオーバーラップを取得することもできます...橋に着いたら、その橋を渡ります)。
(完全を期すために: サイクルの途中にある入力イベントを受け取ると、UDSO は、イベント ペイロードのフィールドを使用して識別する「ダミー イベント」を出力します。予測を作成するために、ダミー イベントを除外します。イベントストリーム)
これをより明確にするために、これが私のシンクからの出力です。これらは、上で言及したダミー イベントです。各行の最初のタイムスタンプは StreamInsight イベント時間 (これらはポイント イベントです) であり、各行の最後のタイムスタンプは実際にはペイロード内のフィールドです。
12:03:30 PM CEP#NO_OUTPUT Predicted NaN 12:03:30 PM
12:03:40 PM CEP#NO_OUTPUT Predicted NaN 12:03:40 PM
12:03:50 PM CEP#NO_OUTPUT Predicted NaN 12:03:50 PM
12:04:00 PM CEP#NO_OUTPUT Predicted NaN 12:04:00 PM
12:04:10 PM CEP#NO_OUTPUT Predicted NaN 12:04:10 PM
12:04:20 PM CEP#NO_OUTPUT Predicted NaN 12:04:20 PM
12:04:30 PM CEP#NO_OUTPUT Predicted NaN 12:04:30 PM
12:04:40 PM CEP#NO_OUTPUT Predicted NaN 12:04:40 PM
12:04:50 PM CEP#NO_OUTPUT Predicted NaN 12:04:50 PM
実際の予測は次のようになります。
12:05:00 PM CEP#2#Space99 Predicted 0.57 12:05:10 PM
12:05:00 PM CEP#2#Space99 Predicted 0.66 12:05:20 PM
12:05:00 PM CEP#2#Space99 Predicted 1.54 12:05:30 PM
12:05:00 PM CEP#2#Space99 Predicted 1.34 12:05:40 PM
12:05:00 PM CEP#2#Space99 Predicted 1.31 12:05:50 PM
12:05:00 PM CEP#2#Space99 Predicted 0.93 12:06:00 PM
12:05:00 PM CEP#2#Space99 Predicted 2.19 12:06:10 PM
12:05:00 PM CEP#2#Space99 Predicted 0.86 12:06:20 PM
イベント時間はすべて同じであることに注意してください。これは、私の UDSO が ALL にp_n
(サイクルの)x_n
計算をトリガーしたタイムスタンプを割り当てるためです。
これは、MSDN のドキュメント「各出力イベントのタイムスタンプは、対応する入力イベントのタイムスタンプに基づいています」と一致しています。
私がやりたいことは、ペイロード フィールド内の時間を使用して予測イベントを作成することです。
私が使うべきだと思うのは
ToPointStreamable(payload => PointEvent<MyPayload>.CreateInsert(payload.eventTime, payload)
、そしてこれをプラグインしようとした方法は次のようなものでした:
var separated_stream = prediction_query.ToEnumerable(StreamEventOrder.FullyOrdered)
.ToPointStreamable(payload => PointEvent<MyPayload>.CreateInsert(payload.eventTime, payload),
AdvanceTimeSettings.IncreasingStartTime);
私prediction_query
のタイプはIQStreamable<MyPayload>
です。
これは機能していません。上記のようにイベントが発生し、予測が生成されていますが、私の " separated_stream
" は存在しない可能性もあります。
コンソールへの出力は、他のクエリと同じパターンを使用して行われます -
var observer = cepApplication_.DefineObserver(() => System.Reactive.Observer.Create<T>(/* print action */));
observer.Deploy(name);
separated_stream.Bind(observer).Run()
なので、そこに間違いはないと思います。
Event Flow Debugger を使用していますが、このクエリが見つかりません...しかし、2 つのプロセスが見つかりましたが、そのうちの 1 つのフローしか認識していないため、2 つ目のプロセスはおそらくこれに関係していると思いますseparated_stream
。診断は、このプロセスまたはそのオペレーターにイベントがないことを示しています。クエリは演算子と同様に「実行中」であり、デバッガーにはエラーのようには見えません。
私の定義はseparated_stream
間違っていますか?どうすれば修正できますか?
ありがとう。
編集: Event Flow Debugger の 2 番目のプロセスは、問題のクエリに関連しています。クエリをコメントアウトすると、プロセスが表示されません。