> I was wondering if it is possible to add a C++ Function to the Compute 
> FunctionRegistry and then use the functions in python.

Yes.  This is partly handled automatically I believe when functions
are added to the C++ function registry.  There are generally two ways
to call the function.  For example, consider the "take" function:

```
>>> import pyarrow as pa
>>> import pyarrow.compute as pc
>>> arr = pa.array([1, 2, 3])
>>> idxs = pa.array([1, 2])
>>> arr.take(idxs)
<pyarrow.lib.Int64Array object at 0x00000211586BF0A0>
[
  2,
  3
]
>>> pc.call_function('take', [arr, idxs])
<pyarrow.lib.Int64Array object at 0x00000211586BF100>
[
  2,
  3
]
```

The first method (`arr.take(idxs)`) is shorthand for the second.  I
believe these convenience shorthands have to be manually added to
pyarrow for each new function.  The second method (`pc.call_function`)
is more generic and I don't think you need to do anything special to
call a function in this way once it has been added to the function
registry.

> Would be great if you could provide examples of such usage.

Some of these shorthand methods are shown in the cookbook[1].
However, I don't see anything geared towards creating new functions
and calling them.  Can you create a JIRA issue (or, even better, a PR)
describing what you'd like to see?

> Also are all functions added to the FunctionRegistry only callable using the 
> GetFunction API with the function name as string ? Would like to know if 
> there is a way to just do arrow::compute::FuncA where FuncA is the newly 
> added function

The C++ API is similar to python.  Some functions have been manually
given a shortcut.  For example, the Take function has a shortcut
here[2].  However, this does not happen automatically and not all
functions have shortcuts.

[1] https://arrow.apache.org/cookbook/py/data.html
[2] 
https://github.com/apache/arrow/blob/86915807af6fe10f44bc881e57b2f425f97c56c7/cpp/src/arrow/compute/api_vector.h#L352

On Tue, Jun 21, 2022 at 6:31 PM Murali S <muralibala8...@gmail.com> wrote:
>
> Hi ,
>
> I was wondering if it is possible to add a C++ Function to the Compute 
> FunctionRegistry and then use the functions in python. Would be great if you 
> could provide examples of such usage.
> Also are all functions added to the FunctionRegistry only callable using the 
> GetFunction API with the function name as string ? Would like to know if 
> there is a way to just do arrow::compute::FuncA where FuncA is the newly 
> added function
>
> Thanks in advance
> Mura
>
>

Reply via email to