如何 return 来自多个标量函数的 StructArray
How to return a StructArray from Multiple Scalar Functions
我有一个场景,我在 Apache Arrow 中处理时态数据并使用计算函数提取 date/time 组件,如下所示:
auto year = arrow::compute::CallFunction("year", {array});
auto month = arrow::compute::CallFunction("month", {array});
auto day = arrow::compute::CallFunction("day", {array});
...
虽然这可行,但我必须管理三个独立的基准面。理想情况下,我希望有一个 returns 包含 year/month/day 元素的 StructArray
函数,它还可以扩展到更详细的时间组件。有没有一种简单的方法可以用当前的 API?
注册这样的函数
Is there a simply way of registering such a function with the current 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});
}
我有一个场景,我在 Apache Arrow 中处理时态数据并使用计算函数提取 date/time 组件,如下所示:
auto year = arrow::compute::CallFunction("year", {array});
auto month = arrow::compute::CallFunction("month", {array});
auto day = arrow::compute::CallFunction("day", {array});
...
虽然这可行,但我必须管理三个独立的基准面。理想情况下,我希望有一个 returns 包含 year/month/day 元素的 StructArray
函数,它还可以扩展到更详细的时间组件。有没有一种简单的方法可以用当前的 API?
Is there a simply way of registering such a function with the current 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});
}