bkietz commented on a change in pull request #9621:
URL: https://github.com/apache/arrow/pull/9621#discussion_r599006347



##########
File path: cpp/src/arrow/compute/api_aggregate.h
##########
@@ -306,5 +306,100 @@ Result<Datum> TDigest(const Datum& value,
                       const TDigestOptions& options = 
TDigestOptions::Defaults(),
                       ExecContext* ctx = NULLPTR);
 
+namespace internal {
+
+/// Internal use only: streaming group identifier.
+/// Consumes batches of keys and yields batches of the group ids.
+class ARROW_EXPORT Grouper {
+ public:
+  virtual ~Grouper() = default;
+
+  /// Construct a Grouper which receives the specified key types
+  static Result<std::unique_ptr<Grouper>> Make(const std::vector<ValueDescr>& 
descrs,
+                                               ExecContext* ctx = 
default_exec_context());
+
+  /// Consume a batch of keys, producing the corresponding group ids as an 
integer array.
+  virtual Result<Datum> Consume(const ExecBatch& batch) = 0;
+
+  /// Get current unique keys. May be called multiple times.
+  virtual Result<ExecBatch> GetUniques() = 0;
+
+  /// Get the current number of groups.

Review comment:
       The number of key(column)s is fixed throughout the lifetime of the 
Grouper. The number of groups is incremented each time a unique row of keys is 
encountered.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to