apache / apache/datafusion-python

Add most functions to the Expr class so that they're chainable.

オープン
#1,064 コメント 5 件 リアクション 0 件 担当者 0 名 GitHub で見る
enhancement
主要言語
Python
スター
604
フォーク
174
平均マージ
1日 7時間
マージ済み PR(30日)
4

説明

**Is your feature request related to a problem or challenge? Please describe what you are trying to do.**
Instead of doing
```python
df.select(
F.abs(
col("id1")
)
.alias("id1")
)
```

It would be nicer to do

```python
df.select(
col("id1")
.abs()
.alias("id1")
)
```

**Describe the solution you'd like**
This is already partly there, for example, `alias` is already in the Expr class. It would be a bit tedious but easy to add under `class Expr`, for example:

```python
def abs(self) -> datafusion.Expr:
"""Return the absolute value of a given number.

Returns:
--------
Expr
A new expression representing the absolute value of the input expression.
"""
return F.abs(self)
```

**Describe alternatives you've considered**
if it weren't for the type hinter, monkey patching.

**Additional context**
There will still be functions that don't make sense to chain off of a call to `col` such as `when` since it doesn't return an Expr. But, even functions that take multiple inputs can have this for instance `col("a").atan2("b")`. Additionally, this is completely backwards compatible since I'm not proposing eliminating the functions module.

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。