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

Function TEST

cpp/src/arrow/acero/aggregate_node_test.cc:50–117  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

48}
49
50TEST(GroupByConvenienceFunc, Basic) {
51 std::shared_ptr<Schema> in_schema =
52 schema({field("key1", utf8()), field("key2", int32()), field("value", int32())});
53 std::shared_ptr<Table> in_table = TableFromJSON(in_schema, {R"([
54 ["x", 1, 1],
55 ["y", 1, 2],
56 ["y", 2, 3],
57 ["z", 2, 4],
58 ["z", 2, 5]
59 ])"});
60
61 // One key, two aggregates, same values array
62 std::shared_ptr<Table> expected = TableFromJSON(schema({
63 field("key1", utf8()),
64 field("value_sum", int64()),
65 field("value_count", int64()),
66 }),
67 {R"([
68 ["x", 1, 1],
69 ["y", 5, 2],
70 ["z", 9, 2]
71 ])"});
72 ASSERT_OK_AND_ASSIGN(std::shared_ptr<Table> actual,
73 TableGroupBy(in_table,
74 {{"hash_sum", {"value"}, "value_sum"},
75 {"hash_count", {"value"}, "value_count"}},
76 {"key1"}));
77 AssertTablesEqual(*expected, *actual);
78
79 // Two keys, one aggregate
80 expected = TableFromJSON(schema({field("key1", utf8()), field("key2", int32()),
81 field("value_sum", int64())}),
82 {
83 R"([
84 ["x", 1, 1],
85 ["y", 1, 2],
86 ["y", 2, 3],
87 ["z", 2, 9]
88 ])"});
89
90 ASSERT_OK_AND_ASSIGN(actual,
91 TableGroupBy(in_table, {{"hash_sum", {"value"}, "value_sum"}},
92 {{"key1"}, {"key2"}}));
93 AssertTablesEqual(*expected, *actual);
94
95 // No keys (whole table aggregate)
96 expected =
97 TableFromJSON(schema({field("sum", int64()), field("count", int64())}), {
98 R"([
99 [15, 5]
100 ])"});
101 ASSERT_OK_AND_ASSIGN(actual, TableGroupBy(in_table,
102 {{"sum", {"value"}, "value_sum"},
103 {"count", {"value"}, "value_count"}},
104 {}));
105
106 // No aggregates (used to get distinct key values)
107 expected =

Callers

nothing calls this directly

Calls 15

TableFromJSONFunction · 0.85
TableGroupByFunction · 0.85
AssertTablesEqualFunction · 0.85
TestVarStdMultiBatchFunction · 0.85
ExecBatchFromJSONFunction · 0.85
AggregateFunction · 0.85
CeilDivFunction · 0.85
ToCharsFunction · 0.85
to_stringFunction · 0.85
push_backMethod · 0.80
ASSERT_OK_AND_ASSIGNFunction · 0.70

Tested by

no test coverage detected