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

Use specialized dictionary compute kernels for binary PhysicalExpr evaluation #1178

Open
1 of 3 tasks
Tracked by #87
alamb opened this issue Oct 26, 2021 · 0 comments
Open
1 of 3 tasks
Tracked by #87

Comments

@alamb
Copy link
Contributor

alamb commented Oct 26, 2021

Is your feature request related to a problem or challenge? Please describe what you are trying to do.
Today, DataFusion's expression evaluation does not work natively on DictionaryArrays; Instead what happens is that the DictionaryArrays are unpacked into their base type (e.g. a string dictionary gets unpacked into a StringArray)

This is very inefficient, especially for expressions like col != 'foo' -- if col is a DictionaryArray this filter could be applied by finding 'foo' in the dictionary and then checking for values with that dictionary index, and the dictionary could be reused at the output.

Describe the solution you'd like
When

That probably looks something like:

Describe alternatives you've considered

Additional context
See #87 for more detail

There are several other operation where dictionary calculation could be much better (e.g. hash aggregate, join, etc)

@alamb alamb changed the title Use specialized dictionary compute kernels for binary expr evaluation Use specialized dictionary compute kernels for binary PhysicalExpr evaluation Oct 26, 2021
tustvold added a commit to tustvold/arrow-datafusion that referenced this issue Jun 28, 2022
alamb pushed a commit that referenced this issue Jun 30, 2022
* Use specialized dictionary kernels (#1178)

* Fix tests
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant