哈希聚合运算
哈希聚合 C++ 序列方法接受各种输入参数,并返回两个迭代器:result 用于分组值,groups 用于组聚合。
以下是可用的方法:
hashAggMax
void hashAggMax(Sequence<T>& result, GenericSequence& groups, GenericSequence const& groupBy) const
返回一个相同类型的序列,其中每个元素组都具有最大值。
hashAggMin
void hashAggMin(Sequence<T>& result, GenericSequence& groups, GenericSequence const& groupBy) const
返回一个相同类型的序列,其中每个元素组的值均为该组中的最小值。
hashAggSum
void hashAggSum(Sequence<R>& result, GenericSequence& groups, GenericSequence const& groupBy) const
返回一个相同类型的序列,其中包含每组元素的总和。
hashAggAvg
void hashAggAvg(Sequence<double>& result, GenericSequence& groups, GenericSequence const& groupBy) const
返回一个包含每个元素组平均值的双精度型结果序列。
hashAggApproxDistinctCount
void hashAggApproxDistinctCount(Sequence<uint4>& result, GenericSequence& groups, GenericSequence const& groupBy) const
返回一个 uint4 类型的 result 序列,其中包含每个元素组的大致区域数量。
hashAggCount
void hashAggCount(Sequence<uint8>& result, GenericSequence& groups) const
返回一个 uint8 类型的 result 序列,其中包含每个组中元素的数量。
hashAggDistinctCount
void hashAggDistinctCount(Sequence<uint8>& result, GenericSequence& groups, GenericSequence const& groupBy) const
返回一个 uint8 类型的 result_count 序列,其中包含每个组中不同元素的数量。
hashAggDupCount
void hashAggDupCount(Sequence<uint8>& result, GenericSequence& groups, GenericSequence const& groupBy, mco_size_t minOccurrences) const
返回一个 uint8
序列,其中包含每个组中重复项的数量。参数 minOccurrences
指定特定值出现次数的最小值,该值才会被计算在内。
当
minOccurrences = 1
时,此方法等同于hashAggDistinctCount()
;当 minOccurrences = 2 时,它会计算出现次数超过一次的项。
示例
以下是一个示例代码片段,演示了如何使用哈希聚合方法来计算成交量值在 0..9、10..19、20..29 等区间内的收盘价平均值:
{
mco_trans_h trans;
mco_cursor_t quote_cursor;
Quote quote;
mco_seq_iterator_t close_iterator, volume_div_10_iterator;
mco_seq_iterator_t group_iterator, avg_iterator;
MCO_RET rc;
...
for (rc = mco_cursor_first(trans, "e_cursor);
rc != MCO_S_CURSOR_END;
rc = mco_cursor_next(trans, "e_cursor))
{
Sequence<double> result;
Sequence<uint4> groups;
Quote_from_cursor(trans, "e_cursor, "e);
quote.close_iterator().hashAggAvg(result, groups, quote.volume_iterator() / Sequence<uint4>(10));
print_sequence(quote, result);
}
...
}