【问题标题】:How to return a StructArray from Multiple Scalar Functions如何从多个标量函数返回 StructArray
【发布时间】: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 注册这样的函数?

【问题讨论】:

    标签: c++ apache-arrow


    【解决方案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});
    
    }
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-30
      • 1970-01-01
      • 2016-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多