#c #apache-arrow
#c #апач-стрела
Вопрос:
У меня есть сценарий, в котором я работаю с временными данными в 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_ptrlt;arrow::Arraygt; CallFunctions(std::vectorlt;std::stringgt; constamp; functions, std::vectorlt;arrow::Datumgt; constamp; args) { std::vectorlt;std::shared_ptrlt;arrow::Arraygt;gt; results; for (std::string constamp; 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}); }