op.bucketGroup( name as String, column as columnIdentifier, boundaries as xs.anyAtomicType[], [collation as String?] ) as NamedColumnGroup
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. |
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: Get the most useful answers to questions from the MarkLogic community, or ask your own question.