-
Notifications
You must be signed in to change notification settings - Fork 370
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
A proposed select() that could achieve high-performance #504
Comments
I'd much prefer something more integrated with the language as discussed in #381. As I see it, Pandas implemented The SQL syntax may be nice for people who are used to it, but the default way of selecting observations should be closer to the Julia syntax IMHO. For example, giving |
The beauty of placeholders is that they don't involve reaching outside of a function's scope. How are you going to avoid placeholders while not violating scope boundaries? |
I'll just add that I share Milan's sentiment, in that I would prefer a Cheers! |
Ok. Then let's get to 1.0 before we consider LINQ-like behavior. |
We have DataFramesMeta now. |
I've thought a lot about getting delayed evaluation like semantics in a sane way lately since I know that people really want them.
So I'd like to propose that we take SQL's lead when we return to those tricks and use the following ideas:
(1) Maintain a proper DSL that's passed in as strings. For precedent, see Pandas' experimental eval function.
(2) Interact with variables in the calling scope using placeholders:
query("select * from df where colA > ?", a)
.We can make this sort of thing blaze if we adopt the
prepare
/exec
distinction that most RDBMS's offer, whereprepare
compiles the clause andexec
substitutes values for placeholders in tight loops.I don't intend to work on this for a long time, but I think this proposal is truly viable. It involves writing some proper parsing code, but removes all the crazy mixed scope issues that made expression indexing hard.
The text was updated successfully, but these errors were encountered: