Is your feature request related to a problem or challenge? Please describe what you are trying to do.
Instead of doing
df.select(
F.abs(
col("id1")
)
.alias("id1")
)
It would be nicer to do
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:
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.
Is your feature request related to a problem or challenge? Please describe what you are trying to do.
Instead of doing
It would be nicer to do
Describe the solution you'd like
This is already partly there, for example,
aliasis already in the Expr class. It would be a bit tedious but easy to add underclass Expr, for example: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
colsuch aswhensince it doesn't return an Expr. But, even functions that take multiple inputs can have this for instancecol("a").atan2("b"). Additionally, this is completely backwards compatible since I'm not proposing eliminating the functions module.