jayzhan211 commented on issue #6747:
URL: https://github.com/apache/datafusion/issues/6747#issuecomment-2236290278
The overall idea looks good to me, but I'm not sure about the `Case` you
mentioned, is there any Expr that is also possible be benefited from builder
mode?
My current idea is specific to function only, but if there is other
non-function expr, we could extend it like ExprExt, ExprBuidler with the
related methods they need.
```rust
pub trait FunctionExt {
/// Add `ORDER BY <order_by>`
///
/// Note: `order_by` must be [`Expr::Sort`]
fn order_by(self, order_by: Vec<Expr>) -> AggregateBuilder;
/// Add `FILTER <filter>`
fn filter(self, filter: Expr) -> AggregateBuilder;
/// Add `DISTINCT`
fn distinct(self) -> AggregateBuilder;
/// Add `RESPECT NULLS` or `IGNORE NULLS`
fn null_treatment(self, null_treatment: NullTreatment) ->
AggregateBuilder;
fn partiion_by:
fn window_frame:
...
}
pub struct FuncBuilder {
fun: Option<FuncKind>,
order_by: Option<Vec<Expr>>,
filter: Option<Expr>,
distinct: bool,
null_treatment: Option<NullTreatment>,
partition_by,
window_frame,
....
}
pub enum FuncKind {
Aggregate(AggregateFunction),
Window(WindowFunction),
}
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]