StreamInsight を使い始め、wcf サービスとして使用しています。私は既に " Microsoft StreamInsight クエリのヒッチハイク ガイド" で助けを求めようとし、例と codeplex の例を試しました。
私の問題はこれです:
私のイベント プロデューサーは、アダプターに AlertEvent をフィードします。
public sealed class AlertEvent
{
public DateTime Date { get; set; }
public long IDGroup { get; set; }
public bool IsToNormalize { get; set; }
public bool IsError { get; set; }
}
AlertEvent の IsError = false の場合、フラグ IsToNormalize は true です。
私が達成しようとしている動作は、IsError でストリームを受信したときです。次の「x」分で、IsToNormalize でアラートイベントが到着するかどうかを確認したいと思います。次に、検索を開始した IsError AlarmEvent を送信して出力します。
私が行ったことは、フィルターに対応する入力を受け取ったときに、その有効期間を「x」分延長し、TumblingWindow を作成して、その期間に別の AlertEvent が他のフラグで到着するかどうかを確認することです (ExtensionMethod を使用して反復します)。ウィンドウ内のすべてのペイロードを介して)。
var stream= from item in input
where item.IsError
group item by item.IdGroup into eachGroup
from window in eachDigital.AlterEventDuration(e => TimeSpan.FromMinutes((double)1.5)).TumblingWindow(TimeSpan.FromSeconds(15), HoppingWindowOutputPolicy.ClipToWindowEnd)
select new
{
Id = eachDigital.Key,
NormEvents = window.HasNormalizationEvents(),
Count = window.Count()
};
次に、TumblingWindow をトリガーした AlarmEvent を取得するために、元の入力と結合しました。
var resultStream = from e1 in stream
join e2 in input
on e1.Id equals e2.DigitalTag
where e1.NormEvents != 0
select e2;
これはまったく機能していません... :/ この問題の解決に役立つアイデアはありますか?
私が持っているもう1つの疑問は、フィルターを通過する入力ごとに新しいstartDateを持つ新しいウィンドウを作成するか、それともタンブリングウィンドウを1つだけ作成するかということです。
ありがとう。