Arrow Compute Layer支持的算子(C代码实现)

目前Apache Arrow支持的算子包括:Filter算子、复杂表达式运算,sort算子、join,聚合算子等。

1.Filter算子

equal(Expression lhs, Expression rhs);
等于
not_equal(Expression lhs, Expression rhs);
不等于
less(Expression lhs, Expression rhs);
小于
less_equal(Expression lhs, Expression rhs);
小于等于
greater(Expression lhs, Expression rhs);
大于
greater_equal(Expression lhs, Expression rhs);
大于等于
is_null(Expression lhs, bool nan_is_null = false);
是否为空
is_valid(Expression lhs);
是否有效
and_(Expression lhs, Expression rhs);
逻辑与(两个条件)
and_(const std::vector<Expression>&);
逻辑与(多个条件)
or_(Expression lhs, Expression rhs);
逻辑或(两个条件)
or_(const std::vector<Expression>&);
逻辑或(多个条件)
not_(Expression operand);
逻辑非

示例:

1.scan_builder->Filter(cp::greater(cp::field_ref("b"), cp::literal(6)));//过滤算子 b列大于6
2.std::vector<cp::Expression> exprs; //过滤算子 (a > 6 && b < 4)
  exprs.push_back(cp::less(cp::field_ref("b"), cp::literal(4)));
  exprs.push_back(cp::equal(cp::field_ref("a"), cp::literal(6)));
  std::vector<cp::Expression> exprs4(exprs);
  scan_builder->Project({"a","b"});
  scan_builder->Filter(cp::and_(exprs4));

2.Sort算子

Ascending
正序
Descending
倒序

示例:

  std::vector<cp::SortKey> sort_keys;     //按第c列以ASC排序
  auto sort1 = cp::SortKey("c",arrow::compute::SortOrder::Ascending);
  sort_keys.push_back(sort1);
  auto sorts = cp::SortOptions(sort_keys);
  auto out = cp::SortIndices(table,sorts);
  auto result = cp::Take(table,out.ValueOrDie());
  table = result->table();

3.复杂表达式运算

cast,when if,时间处理函数等 一键转化dates、times、timestamps等多种时间格式

4.聚合算子

Count
计数数组中的值。
Mean
计算数值数组的平均值。
Product
计算数值数组的值的乘积。
Sum
数值数组的和值。
MinMax
计算数值数组的最小/最大值
Any
测试布尔数组中的任何元素的值是否为真。
All
测试布尔数组中的所有元素的值是否为true。
  Mode计算数值数组的模态(最常用)值
Stddev
计算一个数值数组的标准偏差
Variance
计算一个数值数组的方差
Quantile
计算数值数组的分位数
TDigest
使用T-Digest算法计算数值数组的近似分位数
  Index查找数组中值的第一个索引。
GroupBy
分组聚合

示例:

  auto out_count = cp::MinMax(table->column(1));//对table中的第2列求最大最小值
  auto ss = out_count->scalar()->ToString();
------------------------------------------------------------------------------
结果:
<<<<<<<< out_count == {min:int64 = 7, max:int64 = 9}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值