在巨大的事件流中寻找差距?

2024-02-02

我的 PostgreSQL 数据库中有大约 100 万个事件,其格式如下:

id        |   stream_id     |  timestamp
----------+-----------------+-----------------
1         |   7             |  ....
2         |   8             |  ....

大约有 50,000 个独特的流。

我需要找到任意两个事件之间的时间超过特定时间段的所有事件。换句话说,我需要找到在特定时间段内没有事件的事件对。

例如:

a b c d   e     f              g         h   i  j k
| | | |   |     |              |         |   |  | | 

                \____2 mins____/

在这种情况下,我想找到 (f, g) 对,因为这些是紧邻间隙的事件。

我不在乎查询是否慢,即对于 100 万条记录,如果需要一个小时左右就可以了。然而,数据集将继续增长,所以希望如果它很慢,它也能正常扩展。

我也有 MongoDB 中的数据。

执行此查询的最佳方式是什么?


您可以使用lag() http://www.postgresql.org/docs/current/static/functions-window.html根据stream_id对分区进行窗口函数,stream_id按时间戳排序。这lag()函数使您可以访问分区中以前的行;如果没有滞后值,则它是前一行。因此,如果stream_id 上的分区按时间排序,则前一行是该stream_id 的前一个事件。

SELECT stream_id, lag(id) OVER pair AS start_id, id AS end_id,
       ("timestamp" - lag("timestamp") OVER pair) AS diff
FROM my_table
WHERE diff > interval '2 minutes'
WINDOW pair AS (PARTITION BY stream_id ORDER BY "timestamp");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在巨大的事件流中寻找差距? 的相关文章

随机推荐

  • 在 FB 上实时启动应用程序时收到“此应用程序处于开发模式”

    我认为我一切都正确 但我的应用程序尚未上线 它说 这个应用程序处于开发模式 我猜这就是他们过去所说的沙盒模式 但我不知道在哪里将其从开发模式中取消 有人可以帮帮我吗 提前致谢 onkar 发布的解决方案对我不起作用 我认为自从 onkar
  • 在 D3 力布局链接中间显示箭头

    我正在使用 D3 绘制力导向图 这与此示例非常相似 http bl ocks org mbostock 1153292 http bl ocks org mbostock 1153292 我试图将箭头放在链接的中间而不是末端 玩attr r
  • Android Mediamuxer moovatom

    我正在使用录制设备屏幕Mediacodec and Mediamuxerapi 一切都很好 现在我想在录制时流式传输该文件 但直到muxer停止并且 moovatom 被写入文件末尾 所以我的问题是甚至可以使用Mediamuxer为目的 如
  • 为什么 malloc 中的内存不归零?

    我在书中读过 动态内存分配器维护进程的虚拟区域 内存称为堆 详细信息因系统而异 但是 不失一般性 我们将假设堆是一个区域 零需求内存在未初始化之后立即开始 bss 区域并向上增长 向更高的地址 所以 我很困惑为什么堆中的内存没有初始化为零
  • Excel VBA 使用 Workbook.Open 并显示 Dir(Directory) 的结果

    这看起来很简单 我已经让它工作了多次 但是在我的 Dir 调用 迭代目录 和打开当前文件之间 有些东西不断中断 这是相关代码 SourceLoc C ExcelWIP TestSource SourceCurrentFile Dir Sou
  • 面向对象的实现策略

    我目前正在 Squeak 环境中学习 Smalltalk 并且正在阅读 Squeak A Quick Trip To ObjectLand 我带着一些 Python 和 Java 的先验知识进入了面向对象范式 书中第 36 页的这句话让我想
  • 如何使用 FFMPEG 获取视频尺寸[重复]

    这个问题在这里已经有答案了 我的目标是将视频文件传递给 FFMPEG 并获取其尺寸作为输出 我怎样才能实现这一目标 谁能帮我提供示例代码吗 public void GetVideoInfo string input set up the p
  • 通知所有组成员 GitLab 中失败的管道

    目标是让每个人都能收到每个失败管道的通知 由他们自行决定 目前 我们任何人都可以在这个项目分支上运行管道 并且管道的创建者会收到一封电子邮件 而其他人则不会 我尝试将通知级别设置为watch and custom with failed p
  • Mockito - 如何模拟/验证接受新对象的方法调用?

    我有一个想要测试的方法 method1 它根据提供的参数创建一个对象并调用另一个方法 method2 所以我模拟 method2 它接受一个对象 sampleObj public void method1 booleanParam if b
  • 似乎“border-box”不适用于“a”标签的内联块

    我正在尝试整合box sizing但似乎不起作用 任何人都可以帮助我理解这里的问题 现场演示 https jsfiddle net 3gwebtrain b45qjhh5 a display inline block background
  • 如何在 Puppet 2.7 中将数组转换为逗号分隔的字符串

    我正在使用 Puppet 2 7 我需要将数组转换为逗号分隔列表 hosts fqdn host1 host2 host3 我需要将其转换为所需的结果 host1 host2 host3 我猜 Puppet 3 2 提供了 lambda 表
  • 在 VB.NET 中使用带有命名空间的 LINQ

    我有这个 XML 文件
  • O(N) 排列识别

    这个答案 https stackoverflow com a 36818947 2642059通过比较两个字符串的内容来确定它们是否是排列 如果它们包含相同数量的每个字符 那么它们显然是排列 这是在O N time 但我不喜欢这个答案 因为
  • 像渐变一样将图像淡入透明

    我希望将图像 背景图像 淡化为透明 以便实际上可以看到其后面的内容 由于透明度 只能勉强看到 显然 我可以使用 PNG 图像来实现它 但是每次我想要更改开始 gt 停止透明度点时 我都需要要求我的图形设计师更改图像 也许我想要更多的颜色 或
  • shouldStartLoadWithRequest 永远不会被调用

    我研究了又研究 仍然不明白为什么 shouldStartLoadWithRequest 从未被调用 我的页面加载良好 并且调用了一些 UIWebview 委托协议方法 请从下面的我的代码中找到相关片段 在我的 m 中综合我的 webview
  • 在 React 中更新数组

    我来自 Angular 1 x 希望使用 React Redux 更新无序列表 在 console log 中 我看到数组正在更新 但它似乎没有绑定到 DOM 我有以下内容 在输入的 onKeyPress 上 我有一个推送到消息数组的函数
  • 在 jQuery 插件中调用其他插件

    为了清理我的代码 我想在我的实际 jQuery 插件中使用子插件 但实际上没有发生任何事情 提前谢谢 作为一个简单的例子 请看下面的代码 function fn funct function so far it seems to run t
  • 快速旋转 UIImageView 动画

    我正在尝试制作 180 度旋转的动画UIImageView在斯威夫特 UIView animateWithDuration 1 0 animations gt Void in self arrowImageView transform CG
  • 为什么 PHPmailer 不发送附件?

    我一直致力于使用 PHPmailer 创建文件上传表单以作为附件发送 我终于可以发送电子邮件了 但没有发送附件 这是我的 HTML 表单
  • 在巨大的事件流中寻找差距?

    我的 PostgreSQL 数据库中有大约 100 万个事件 其格式如下 id stream id timestamp 1 7 2 8 大约有 50 000 个独特的流 我需要找到任意两个事件之间的时间超过特定时间段的所有事件 换句话说 我