2016-03-23 1 views
0

J'ai été vraiment surpris MonetDB, une base de données analytique basée sur une colonne n'a pas de fonctions analytiques comme lead() ou lag(). J'ai vraiment besoin d'eux pour calculer le temps entre les événements utilisateur. Les tables sont volumineuses (plus d'un milliard de lignes) et je ne veux pas effectuer d'auto-jointure.Implémentation la plus rapide des fonctions window() ou lag() dans MonetDB

Existe-t-il un moyen d'émuler les fonctions de fenêtre rapide lead() ou lag() dans MonetDB?

+0

Serait-ce des fonctions définies par l'utilisateur? Si oui, à quelle vitesse sera-t-il? – bigdatarefiner

Répondre

1

Les deux opérateurs supposent que vous connaissez l'ordre des lignes dans votre table. En général, un système relationnel est libre de ne pas obéir à l'ordre d'insertion/mise à jour. C'est pourquoi ce n'est pas directement pris en charge.

Si vous savez sur quelle (s) colonne (s) vous souhaitez implémenter le lead/lag, alors un UDF est en effet le chemin à parcourir. Cela pourrait même être développé en R ou en Python. Cordialement, Martin