Details
-
Improvement
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
Description
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 or np.select.
Attachments
Issue Links
- is a child of
-
ARROW-8894 [C++] C++ array kernels framework and execution buildout (umbrella issue)
- Open
- is depended upon by
-
ARROW-13200 [R] Add binding for case_when()
- Resolved
- relates to
-
ARROW-13220 [C++] Add a 'choose' kernel/scalar compute function
- Resolved
- links to