[ 
https://issues.apache.org/jira/browse/FLINK-3650?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15331619#comment-15331619
 ] 

ASF GitHub Bot commented on FLINK-3650:
---------------------------------------

Github user fhueske commented on a diff in the pull request:

    https://github.com/apache/flink/pull/1856#discussion_r67150746
  
    --- Diff: 
flink-scala/src/main/scala/org/apache/flink/api/scala/DataSet.scala ---
    @@ -699,6 +700,55 @@ class DataSet[T: ClassTag](set: JavaDataSet[T]) {
       }
     
       /**
    +    * Selects an element with minimum value.
    +    *
    +    * The minimum is computed over the specified fields in lexicographical 
order.
    +    *
    +    * Example 1: Given a data set with elements [0, 1], [1, 0], the
    +    * results will be:
    +    *
    +    * minBy(0)[0, 1]
    +    * minBy(1)[1, 0]
    +    * Example 2: Given a data set with elements [0, 0], [0, 1], the
    +    * results will be:
    +    * minBy(0, 1)[0, 0]
    +    * If multiple values with minimum value at the specified fields exist, 
a random one will be
    +    * picked.
    +    * Internally, this operation is implemented as a {@link 
ReduceFunction}.
    +    */
    +  def minBy(fields: Int*) : DataSet[T]  = {
    +    if (!getType.isTupleType) {
    +      throw new InvalidProgramException("DataSet#minBy(int...) only works 
on Tuple types.")
    +    }
    +
    +    reduce(new 
SelectByMinFunction[T](getType.asInstanceOf[TupleTypeInfoBase[T]], 
fields.toArray))
    +  }
    +
    +  /**
    +    * Selects an element with maximum value.
    +    *
    +    * The maximum is computed over the specified fields in lexicographical 
order.
    +    *
    +    * Example 1: Given a data set with elements [0, 1], [1, 0], the
    +    * results will be:
    +    *
    +    * maxBy(0)[1, 0]
    +    * maxBy(1)[0, 1]
    +    * Example 2: Given a data set with elements [0, 0], [0, 1], the
    +    * results will be:
    +    * maxBy(0, 1)[0, 1]
    +    * If multiple values with maximum value at the specified fields exist, 
a random one will be
    +    * picked
    +    * Internally, this operation is implemented as a {@link 
ReduceFunction}.
    +    *
    +    */
    +  def maxBy(fields: Int*) : DataSet[T] = {
    +    if (!getType.isTupleType) {
    +      throw new InvalidProgramException("DataSet#maxBy(int...) only works 
on Tuple types.")
    +    }
    +    reduce(new 
SelectByMaxFunction[T](getType.asInstanceOf[TupleTypeInfoBase[T]], 
fields.toArray))
    +  }
    --- End diff --
    
    Add a new line


> Add maxBy/minBy to Scala DataSet API
> ------------------------------------
>
>                 Key: FLINK-3650
>                 URL: https://issues.apache.org/jira/browse/FLINK-3650
>             Project: Flink
>          Issue Type: Improvement
>          Components: Java API, Scala API
>    Affects Versions: 1.1.0
>            Reporter: Till Rohrmann
>            Assignee: ramkrishna.s.vasudevan
>
> The stable Java DataSet API contains the API calls {{maxBy}} and {{minBy}}. 
> These methods are not supported by the Scala DataSet API. These methods 
> should be added in order to have a consistent API.



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

Reply via email to