在 MonetDB 中最快实现lead() 或 lag() 窗口函数

Posted

技术标签:

【中文标题】在 MonetDB 中最快实现lead() 或 lag() 窗口函数【英文标题】:Fastest implementation of lead() or lag() window functions in MonetDB 【发布时间】:2016-03-23 18:29:52 【问题描述】:

我真的很惊讶 MonetDB,基于分析列的 DB 没有像 Lead() 或 lag() 这样的分析函数。我真的需要他们计算用户事件之间的时间。这些表很大(超过十亿行),我不想执行自联接。

有什么方法可以模拟 MonetDB 中的 fast lead() 或 lag() 窗口函数?

【问题讨论】:

可以是用户定义的函数吗?如果是这样,它会多快? 【参考方案1】:

这两个运算符都假定您了解表中的行顺序。通常,关系系统可以随意违反插入/更新顺序。这就是为什么不直接支持它的原因。

如果您知道要在哪些列上实现领先/滞后,那么 UDF 确实是可行的方法。这甚至可以用 R 或 Python 开发。 问候,马丁

【讨论】:

以上是关于在 MonetDB 中最快实现lead() 或 lag() 窗口函数的主要内容,如果未能解决你的问题,请参考以下文章

在 MonetDB 中使用 WITH

在 MonetDB 中的 case 语句中绑定变量

使用主键约束在 monetdb 中批量加载

monetdb 批量复制 |使用 python 批量复制

从 MonetdbLite C API 使用 monetdb_append

MonetDB 如何使用索引?