Apache spark 使用Spark数据帧,在窗口函数中使用间隔的示例

Apache spark 使用Spark数据帧,在窗口函数中使用间隔的示例,apache-spark,Apache Spark,我有一个订单数据框架(contactidid、orderdate、orderamount),我想要一个新的列,其中包含每个订单在此订单之前12个月内联系人的所有订单金额之和。我认为最好的方法是在Spark>1.5中使用窗口功能和新的间隔功能 但我很难做到这一点或找到文件。我最好的猜测是: val dfOrdersPlus = dfOrders .withColumn("ORDERAMOUNT12MONTH", expr("sum(ORDERAMOUNT) OVER (PAR

我有一个订单数据框架(contactidid、orderdate、orderamount),我想要一个新的列,其中包含每个订单在此订单之前12个月内联系人的所有订单金额之和。我认为最好的方法是在Spark>1.5中使用窗口功能和新的间隔功能

但我很难做到这一点或找到文件。我最好的猜测是:

 val dfOrdersPlus = dfOrders
   .withColumn("ORDERAMOUNT12MONTH", 
      expr("sum(ORDERAMOUNT) OVER (PARTITION BY CONTACTID ORDER BY ORDERDATE RANGE BETWEEN INTERVAL 12 months preceding and INTERVAL 1 day preceding)"));
但我得到一个RuntimeException:“预期输入结束”。关于这个“expr”我做错了什么,以及在哪里可以找到关于新间隔文字的文档,有什么想法吗?

目前:

  • expr
    中不支持窗口功能。要使用窗口函数,您必须在已注册的表上使用
    DataFrame
    DSL或原始SQL(仅限Spark 1.5和1.6)

  • 窗口函数仅支持数字类型的范围间隔。不能使用
    DateType
    /
    TimestampType
    和date
    INTERVAL
    表达式。(Spark 1.5、1.6、2.0.0-预览版)

如果要使用带有日期或时间列的窗口函数,可以先将其转换为Unix时间戳。您将在中找到完整的示例