Loading TOC...

op.bucketGroup

op.bucketGroup(
   name as String,
   column as columnIdentifier,
   boundaries as xs.anyAtomicType[],
   [collation as String?]
) as NamedColumnGroup

Summary

This function can be used as a named group in functions prototype.groupToArrays or prototype.facetBy . After grouping, the plan can also join a literal table with descriptive metadata based for each bucket number. Developers can handle special cases by taking the same approach as the convenience function and binding a new column on the return value of an sql.bucket expression on a numeric or datetime column to use as a grouping key.

Parameters
name The name of both the group and the new grouping key column with numbered buckets.
column The identifier for the existing column with the values (typically numeric or datetime) to put into buckets. The columns can be named with a string or a column parameter function such as op.col or constructed from an expression with op.as.
boundaries An ordered JavaScript array of values that specify the boundaries between buckets. The values must have the same type as the existing column.
collation The collation to use when comparing strings as described in 'Collation URI Syntax' in the Application Developer's Guide.

See Also

Example

const op = require('/MarkLogic/optic');

op.fromLiterals([
            {'r':1, 'c1':'a', 'c2':'x', 'c3':'m'},
            {'r':2, 'c1':'b', 'c2':'x'          },
            {'r':3, 'c1':'a',           'c3':'n'},
            {'r':4,           'c2':'y', 'c3':'o'},
            {'r':5, 'c1':'b'                    },
            {'r':6,           'c2':'y'          },
            {'r':7,                     'c3':'p'},
            {'r':8, 'c1':'b', 'c2':'x', 'c3':'q'}
            ])
.groupToArrays(
    [op.bucketGroup('rBucket', op.col("r"), [2,4])],
    [op.count('numRows')]
    )
.result();
  

Stack Overflow iconStack Overflow: Get the most useful answers to questions from the MarkLogic community, or ask your own question.