Sql server 2008 r2 StreamInsight-定义正确窗口时出现问题
我开始使用StreamInsight,并将其用作wcf服务。 我已经尝试在“Microsoft StreamInsight查询搭便车指南”中寻求帮助,并尝试了codeplex中的示例和示例 我的问题是: My event producer向适配器提供AlertEvent的:Sql server 2008 r2 StreamInsight-定义正确窗口时出现问题,sql-server-2008-r2,streaminsight,Sql Server 2008 R2,Streaminsight,我开始使用StreamInsight,并将其用作wcf服务。 我已经尝试在“Microsoft StreamInsight查询搭便车指南”中寻求帮助,并尝试了codeplex中的示例和示例 我的问题是: My event producer向适配器提供AlertEvent的: public sealed class AlertEvent { public DateTime Date { get; set; } public long IDGroup { get; set; }
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的alertEvent。然后我发送并输出启动搜索的iErrorAlarmEvent
我所做的是,当我收到一个与过滤器对应的输入时,我会在“x”分钟内延长它的生存期,并创建一个TumblingWindow,以查看在这段时间内是否有另一个带有另一个标志的AlertEvent到达(使用ExtensionMethod迭代窗口中的所有有效负载)
然后,为了获取触发TumblingWindow的AlarmEvent,我与原始输入进行了连接
var resultStream = from e1 in stream
join e2 in input
on e1.Id equals e2.DigitalTag
where e1.NormEvents != 0
select e2;
这根本不起作用…:/有什么办法可以帮助解决这个问题吗
我的另一个疑问是,是否会为通过过滤器的每个输入创建一个带有新startDate的新窗口,还是只创建一个tumblingWindow
谢谢。试试这个:
// Move all error events
// to the point where the potential timeout would occur.
var timedOut = input
.Where(e => e.IsError == true)
.ShiftEventTime(e => e.StartTime + TimeSpan.FromMinutes(5));
// Extend all events IsToNormalize by the timeout.
var following = input
.Where(e => e. IsToNormalize == true)
.AlterEventDuration(e => TimeSpan.FromMinutes(5));
// Mask away the potential timeout events by the extended events.
// - If IsToNormalize did not occur within the timeout, then the shifted error event
// will remain unchanged by the left-anti-semi-join and represent
// the desired output.
var result = from t in timedOut
where (from c in following
where t.IdGroup == c.IdGroup
select c).IsEmpty()
select t; // or some projection on t
@米奇·麦特:你为什么需要这种激励来帮助别人?如果你不想帮忙,那就不要。我看不出有什么问题…@Megacan:每个人都需要激励。
// Move all error events
// to the point where the potential timeout would occur.
var timedOut = input
.Where(e => e.IsError == true)
.ShiftEventTime(e => e.StartTime + TimeSpan.FromMinutes(5));
// Extend all events IsToNormalize by the timeout.
var following = input
.Where(e => e. IsToNormalize == true)
.AlterEventDuration(e => TimeSpan.FromMinutes(5));
// Mask away the potential timeout events by the extended events.
// - If IsToNormalize did not occur within the timeout, then the shifted error event
// will remain unchanged by the left-anti-semi-join and represent
// the desired output.
var result = from t in timedOut
where (from c in following
where t.IdGroup == c.IdGroup
select c).IsEmpty()
select t; // or some projection on t