RowNumberAnalytic

A RowNumberAnalytic is an AnalyticFunction that determines the row number ranking over any values, returning the row number as a Long. Values range from 1 through the number of rows in the partition. It doesn't matter if the order by values are all distinct. If there are equivalent order by values, then all equivalent values receive a different row number, e.g. 1 2 3 4 5.

Usage

Create and use a RowNumberAnalytic, with one of the following methods:

  • AnalyticAggregator ana = new AnalyticAggregator.Builder()
        .setAnalyticFunction(new RowNumberAnalytic())
        .setPartition(new PartitionClause(Arrays.asList("category1")))
        .setOrderBy(new OrderByClause(Arrays.asList(new OrderByElement("value2", OrderByElement.SortDir.DESC))))
        .build();
    
  • AnalyticAggregator agg = AnalyticAggregator.getAnalytic("RowNumber() partitionBy(category1) orderBy(value2 DESC)");
    

RowNumberAnalytic is a NoPropAnalytic, so it is an error to specify a property. It does not take a user-given window clause.

If every order by value is distinct, then DenseRankAnalytic and RankAnalytic generate the same values as RowNumberAnalytic.