美文网首页
Sql中的window

Sql中的window

作者: NatsuYori | 来源:发表于2020-09-08 22:50 被阅读0次

    之前上数据库课的时候还是看过window这个概念的,但是好久没用了…基本忘光…
    用到这个函数的起因,是在组织feature的时候需要历史特征,本来只需要前一天的历史数据,用filter筛出数据,再join回去就好了,但是由于在实验阶段,扩展到最后需要前7天的数据,可想而知那个代码改的老长…当然window函数也就在某些特定情况才能用的

    Window In Scala

    在scala中,定义窗体对象

     windowObj = window.partitionBy(field1, field2, ...).orderBy(filed_N)
    

    这里可以看做是定义了一个规则,按照parition中指定的field进行分区,然后这些分区按照fileld_N进行排序
    一般窗体对象还可以和rowsbetween和rangebetween一起使用,rowsbetween指的就是排序后的分区块间距,rangebetween则是具有数据含义的,根据filed的值,在指定range范围内的都会被筛进来

      windowObj = window.partitionBy(field1, field2, ...).orderBy(filed_N).rowsbetween(-4,-1)
    

    表示根据filedn顺序分区之后,在这个分区块的往前4块到1块的分区
    这样只是定义了窗体的对象,在df需要使用窗体的时候,用over(windowObj)从窗体中抽取对应的数据,比如使用

    collect_list(filed1).over(windowobj)
    

    可以从窗体中抽取对应行的窗口数据

    相关文章

      网友评论

          本文标题:Sql中的window

          本文链接:https://www.haomeiwen.com/subject/hegvsktx.html