[
https://issues.apache.org/jira/browse/ARROW-13064?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Joris Van den Bossche updated ARROW-13064:
------------------------------------------
Summary: [C++] Add a general "if, ifelse, ..., else" kernel ("CASE WHEN")
(was: [C++] Add a general "if, ifelse, ..., else" kernel)
> [C++] Add a general "if, ifelse, ..., else" kernel ("CASE WHEN")
> ----------------------------------------------------------------
>
> Key: ARROW-13064
> URL: https://issues.apache.org/jira/browse/ARROW-13064
> Project: Apache Arrow
> Issue Type: Improvement
> Components: C++
> Reporter: Ian Cook
> Assignee: David Li
> Priority: Major
> Labels: pull-request-available
> Time Spent: 5h
> Remaining Estimate: 0h
>
> ARROW-10640 added a ternary {{if_else}} kernel. Add another kernel that
> extends this concept to an arbitrary number of conditions and associated
> results, like a vectorized {{if-ifelse-...-else}} with an arbitrary number of
> {{ifelse}} and with the {{else}} optional. This is like a SQL {{CASE}}
> statement.
> How best to achieve this is not obvious. To enable SQL-style uses, it would
> be most efficient to implement this as a variadic kernel where the
> even-number arguments (0, 2, ...) are the arrays of boolean conditions, the
> odd-number arguments (1, 3, ...) are the corresponding arrays of results, and
> the final argument is the {{else}} result. But I'm not sure if this is
> practical. Maybe instead we should implement this to operate on listarrays,
> like NumPy's
> {{[np.where|https://numpy.org/doc/stable/reference/generated/numpy.where.html]}}
> or
> {{[np.select|https://numpy.org/doc/stable/reference/generated/numpy.select.html]}}.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)