如何从多个标量函数返回 StructArray
Posted
技术标签:
【中文标题】如何从多个标量函数返回 StructArray【英文标题】:How to return a StructArray from Multiple Scalar Functions 【发布时间】:2022-01-08 15:57:29 【问题描述】:我有一个场景,我在 Apache Arrow 中处理时间数据,并使用计算函数来提取日期/时间组件,如下所示:
auto year = arrow::compute::CallFunction("year", array);
auto month = arrow::compute::CallFunction("month", array);
auto day = arrow::compute::CallFunction("day", array);
...
虽然这可行,但我必须管理三个独立的基准。理想情况下,我希望有一个函数返回包含年/月/日元素的StructArray
,它还可以扩展到更详细的时间组件。有没有一种简单的方法可以用当前的 API 注册这样的函数?
【问题讨论】:
【参考方案1】:有没有一种简单的方法可以用当前的 API 注册这样的函数?
我不这么认为,您的用例看起来太具体了。另一方面,如果你经常这样做,你可以实现一些可以为你做的事情:
std::shared_ptr<arrow::Array> CallFunctions(std::vector<std::string> const& functions,
std::vector<arrow::Datum> const& args)
std::vector<std::shared_ptr<arrow::Array>> results;
for (std::string const& function : functions)
results.push_back(arrow::compute::CallFunction(function, args).ValueOrDie().make_array());
return arrow::StructArray::Make(results, functions).ValueOrDie();
void test()
auto array = ....
auto structArray = CallFunctions("year", "month", "day", array);
【讨论】:
以上是关于如何从多个标量函数返回 StructArray的主要内容,如果未能解决你的问题,请参考以下文章