You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@spark.apache.org by "Reynold Xin (JIRA)" <ji...@apache.org> on 2015/05/04 09:04:05 UTC

[jira] [Updated] (SPARK-7322) Add DataFrame DSL for window function support

     [ https://issues.apache.org/jira/browse/SPARK-7322?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Reynold Xin updated SPARK-7322:
-------------------------------
    Description: 


class Column {
  ...
  def over(): WindowFunctionSpec
  ...
}

// By default frame = full partition
class WindowFunctionSpec {
  def partitionBy(cols: Column*): WindowFunctionSpec
  def orderBy(cols: Column*): WindowFunctionSpec

  // restrict frame beginning from current row - n position
  def rowsPreceding(n: Int): WindowFunctionSpec

  // restrict frame ending from current row - n position
  def rowsFollowing(n: Int): WindowFunctionSpec

  def rangePreceding(n: Int): WindowFunctionSpec
  def rowsFollowing(n: Int): WindowFunctionSpec
}


df.select(
  df.store,
  df.date,
  df.sales,
  avg(df.sales).over.partitionBy(df.store)
                    .orderBy(df.store) 
                    .rowsFollowing(0)    // this means from unbounded preceding to current row
)

  was:A good reference implementation: http://www.jooq.org/doc/3.6/manual-single-page/#window-functions


> Add DataFrame DSL for window function support
> ---------------------------------------------
>
>                 Key: SPARK-7322
>                 URL: https://issues.apache.org/jira/browse/SPARK-7322
>             Project: Spark
>          Issue Type: Sub-task
>          Components: SQL
>            Reporter: Reynold Xin
>
> class Column {
>   ...
>   def over(): WindowFunctionSpec
>   ...
> }
> // By default frame = full partition
> class WindowFunctionSpec {
>   def partitionBy(cols: Column*): WindowFunctionSpec
>   def orderBy(cols: Column*): WindowFunctionSpec
>   // restrict frame beginning from current row - n position
>   def rowsPreceding(n: Int): WindowFunctionSpec
>   // restrict frame ending from current row - n position
>   def rowsFollowing(n: Int): WindowFunctionSpec
>   def rangePreceding(n: Int): WindowFunctionSpec
>   def rowsFollowing(n: Int): WindowFunctionSpec
> }
> df.select(
>   df.store,
>   df.date,
>   df.sales,
>   avg(df.sales).over.partitionBy(df.store)
>                     .orderBy(df.store) 
>                     .rowsFollowing(0)    // this means from unbounded preceding to current row
> )



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@spark.apache.org
For additional commands, e-mail: issues-help@spark.apache.org