Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Convert BuiltInWindowFunction::{NthValue} to a user defined functions #12649

Open
Tracked by #8709
alamb opened this issue Sep 27, 2024 · 7 comments · May be fixed by #13201
Open
Tracked by #8709

Convert BuiltInWindowFunction::{NthValue} to a user defined functions #12649

alamb opened this issue Sep 27, 2024 · 7 comments · May be fixed by #13201
Assignees
Labels
enhancement New feature or request

Comments

@alamb
Copy link
Contributor

alamb commented Sep 27, 2024

Is your feature request related to a problem or challenge?

Part of #8709

There is now no difference between "built in" / "prepackaged" scalar and aggregate functions in DataFusion, however there are still some "built in" window functions -- see the current source for BuiltInWindowFunction for the up to date list of what remains

The problem with having two different kinds of window functions is

  1. There are some features that may not be available to User Defined Window Functions that rely on built in
  2. Users can not easily choose which window functions to include or override the behavior if they need something different

Describe the solution you'd like

I would like to remove the "built in" version of this function and convert it to a user defined function

Describe alternatives you've considered

At a high level the process is:

  1. Add a new WindowUDFImpl in the functions-window crate
  2. Port the code from the relevant existing implementation of the the built in functions in datafusion/physical-expr/src/window
  3. Remove the BuiltInWindowFunction variant and then get everything to compile (the compiler will show you where the existing implementations are)

Additional context

Here are some good examples:

@alamb alamb added the enhancement New feature or request label Sep 27, 2024
@alamb
Copy link
Contributor Author

alamb commented Sep 27, 2024

I think this one is also relatively straightforward and would make a good first project for someone skilled in Rust who wanted to get experience with the Datafusion codebase and tests

@dharanad
Copy link
Contributor

take

@Omega359
Copy link
Contributor

Convert BuiltInScalarFunction::{NthValue} -> Convert BuiltInWindowFunction::{NthValue}

@alamb alamb changed the title Convert BuiltInScalarFunction::{NthValue} to a user defined functions Convert BuiltInWindowFunction::{NthValue} to a user defined functions Sep 29, 2024
@alamb
Copy link
Contributor Author

alamb commented Sep 29, 2024

Convert BuiltInScalarFunction::{NthValue} -> Convert BuiltInWindowFunction::{NthValue}

🤦 -- fixed

@jatin510
Copy link
Contributor

Hi, @dharanad . If you are busy can I look into this !

@dharanad
Copy link
Contributor

Hi, @dharanad . If you are busy can I look into this !

Sure

@buraksenn
Copy link
Contributor

take

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants