MCPcopy Create free account
hub / github.com/apache/arrow / ExecNode_Aggregate

Function ExecNode_Aggregate

r/src/compute-exec.cpp:382–408  ·  view source on GitHub ↗

[[acero::export]]

Source from the content-addressed store, hash-verified

380
381// [[acero::export]]
382std::shared_ptr<acero::ExecNode> ExecNode_Aggregate(
383 const std::shared_ptr<acero::ExecNode>& input, cpp11::list options,
384 std::vector<std::string> key_names) {
385 std::vector<arrow::compute::Aggregate> aggregates;
386
387 for (cpp11::list name_opts : options) {
388 auto function = cpp11::as_cpp<std::string>(name_opts["fun"]);
389 auto opts = make_compute_options(function, name_opts["options"]);
390 auto target_names = cpp11::as_cpp<std::vector<std::string>>(name_opts["targets"]);
391 auto name = cpp11::as_cpp<std::string>(name_opts["name"]);
392
393 std::vector<arrow::FieldRef> targets;
394 for (auto&& target : target_names) {
395 targets.emplace_back(std::move(target));
396 }
397 aggregates.push_back(arrow::compute::Aggregate{std::move(function), opts,
398 std::move(targets), std::move(name)});
399 }
400
401 std::vector<arrow::FieldRef> keys;
402 for (auto&& name : key_names) {
403 keys.emplace_back(std::move(name));
404 }
405 return MakeExecNodeOrStop(
406 "aggregate", input->plan(), {input.get()},
407 acero::AggregateNodeOptions{std::move(aggregates), std::move(keys)});
408}
409
410// [[acero::export]]
411std::shared_ptr<acero::ExecNode> ExecNode_Join(

Callers 1

Calls 5

make_compute_optionsFunction · 0.85
MakeExecNodeOrStopFunction · 0.85
emplace_backMethod · 0.80
push_backMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected