当前位置: 首页 > 知识库问答 >
问题:

基于Drools融合时间的滑动窗口和属性滤波

邢灿
2023-03-14

我尝试在Drools 5.4.0中使用滑动时间窗口。最终版本,并提供以下官方文档片段:

StockTick() over window:time( 2m )

StockTick( company == "RHT" ) over window:length( 10 )

我认为混合形式是有效的:

StockTick( company == "RHT" ) over window:time( 2m )

但是,除非我弄错了,否则它的行为并不像预期的那样(即只考虑在过去2分钟内发生的RHT股票滴答声)。我不明白结果的逻辑。

有人能给我解释一下这个把戏吗?

谢谢

共有2个答案

万俟心思
2023-03-14

两个Drools版本会导致两种不同的行为(相同的单元测试)。所以我认为我的误解来自于“windows”行为中的一个bug。这次我再具体不过了。

韦熙云
2023-03-14

查看drools-fusion-docs章节2.6.1。滑动时间窗口有一个聚合示例。这是一个应该适合您需要的变体。

rule "At least one RHT in the last 2 minutes"
when
    Number( intValue > 0 ) from accumulate(
        $tick = StockTick( company == "RHT" ) over window:time( 2m ),
        count( $tick ) )
then
    // do something here
end
 类似资料:
  • 我正在制作一个应用程序,其中通过每5秒一次的间隔HTTP请求收集来自虚拟机的与CPU使用、内存使用、磁盘使用等相关的数据。收集的数据如下所示: 我在Drools Fusion上创建了一些规则,试图看到以下内容:例如,当CPU使用率在过去10秒内达到10%以上时,然后在屏幕上打印一些东西,但我的问题是,即使我在规则中输入了命令,即使尚未通过,规则仍然被触发。这是CPU使用率的规则: 是从HTTP响应

  • 我需要编写一条规则,统计过去10秒内我在流中收到的事实数量,如果它们符合特定标准。 例如,如果两辆黑色汽车在最后10秒内通过十字路口,我想提醒某人。 我有以下规则: 当我乘坐一辆黑色汽车经过时,这是有效的,但是,除非有两辆黑色汽车,否则我不希望它开火。我找不到一个很好的例子。 谢谢

  • 我正在尝试flink的一些网络监控工作。我的目标是计算每个的不同。 我下面的代码工作,但性能真的很糟糕。似乎每个滑动窗口都重新计算所有事件,但这不应该是必要的。 例如,我们有时间秒1-600的事件。Flink可以得到每秒的累加器,所以我们每秒有600个累加器。当第一个滑动窗口过期时,flink只合并1-300的累加器,并销毁第二个1的累加器。此窗口还可以在最后一秒前预合并1-299。当第二个滑动窗

  • 问题内容: 嗨,我有一张看起来像这样的桌子 我想要按周分组的页面视图聚合,但显示过去30天的聚合-(每周滑动窗口聚合,窗口大小为30天) 我正在使用Google bigquery 编辑:戈登-对您的“客户”发表评论,实际上我需要的是稍微复杂一点的,这就是为什么我在上表中包括客户的原因。我希望获得每周30天的浏览量> n的客户数量。像这样的东西 但是,为了简单起见,如果我能够获得页面浏览量的滑动窗口

  • 假设我有一个股票市场交易事件流,如下所示: 使得technicalN(其中N是一些数字)代表给定公司的日终股票市场交易数据的第N个技术交易条目[开盘(浮动)、高位(浮动)、低位(浮动)、收盘(浮动)、成交量(int)]。(即ticker GOOG的技术1不同于ticker MSFT的技术1。)如: (请注意,这些交易价格/交易量完全是虚构的。 假设我想创建一个大小为2、时间间隔为1天的窗口,这样我

  • 我是Flink的新手,需要方法的帮助。我有时间颗粒度为5分钟的事件流。我想通过调用rest API来获取事件的元数据,其中包含过去1小时数据点的历史事件,即过去12点(5分钟时间颗粒度)。 e、 g事件的时间戳为10:00、10:05、10:10、10:15等,因此如果我想获取时间戳为11:00的事件元数据,我将调用send发送所有时间戳为10:00、10:05、10:10、10:15的事件。。1