-
-
Notifications
You must be signed in to change notification settings - Fork 404
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
Add an IbisInterface #4517
Add an IbisInterface #4517
Conversation
I have been thinking of HoloViews/ Panel and Ibis lately on the back of a blog by quantstack. I cannot read from the above the why. So i hope you will write a bit about the why or vision. For me the vision would be to make it very easy to use a wide range of data sources within HoloViz. Similarly to how easy it is to use BI tools like Tableau with All kinds of data sources. And maybe this interface could be used to only load the data needed to display in the plot or do the aggregation on the backend server. For me unfortunately Ibis does not support sql server or snowflake which means i cannot use it in my Daily Work. |
Yes, the vision is to be able to instantiate a HoloViews element where the "data" is lazy, just a query and not the actual data, with the data fetched dynamically when it is actually needed for plotting or analysis. That does indeed set HoloViews up to do some more of the things that BI tools do. If you have any funding, I would imagine that Quansight would add support to Ibis for sql server, and maybe snowflake... |
@MarcSkovMadsen Adding additional support in Ibis is definitely something we at Quansight would be open to discussing. |
There is some WIP on a microsoft sql server interface ibis-project/ibis#1997 |
This is starting to look good. I've got a few comments but will hold off until you tell me it's ready. |
I'd love to take some comments soon. I'm nearing the end of the skeleton and starting to understand the model better. Is my PR what is breaking the travis tests? |
I'll do a high-level review today then. While I do think this PR is
probably failing tests, the tests are also generally broken today. I'll
merge a PR to get the tests running again and then you can rebase.
…On Tue, 4 Aug 2020, 04:44 Tony Fast, ***@***.***> wrote:
I'd love to take some comments soon. I'm nearing the end of the skeleton
and starting to understand the model better.
Is my PR what is breaking the travis tests?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#4517 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAL2TM7EOTNLY2NVHKXKAE3R65YZTANCNFSM4OWCXQ2Q>
.
|
Will have a go at this now. |
Huge amount of progress, 73 tests passing and 34 errors. |
Okay the only real problems remaining:
|
Any ideas why the appveyor ci is getting mad at the sqlite connections? I can't seem to find a solution. |
I don't think it is possible to avoid sorting for some ibis backends. what should be done in this case? is it likely that |
That's fine, we just have to document it and update the test. The cuDF interface has the same problem currently. |
Looks like |
I'll rebase, I fixed that one master. Pulling from conda-forge made it very slow. |
5c53184
to
8ca55d4
Compare
0f19c54
to
5c53184
Compare
Hi @philippjfr, I am looking with @tonyfast into the failing tests. Had to reset a commit. |
5c53184
to
3272d68
Compare
I had dropped conda-forge because it was taking forever to solve in the Py2 build. Will see if we can get around that somehow, otherwise let's just increase the timeout. Looks like we're still getting the NoWindowOp errors, still the wrong version of Ibis? |
naw. i'm doing something wrong. i had to add ibis builds from conda-forge cause i couldn't get it from anywhere the other channels. I've got to keep trying things otherwise I'll likely have to duck some of the iloc tests until a new version of ibis shows up. |
Totally fine, I'd suggest adding a decorator that checks for a specific version:
|
The sister PR to add rowid support in Ibis has been merged ibis-project/ibis#2345 |
c26b721
to
f742f67
Compare
This pull request has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs. |
Adds an IbisInterface built on the Ibis project which will let us interface directly with various database backends.
So far this is a basic skeleton which we can fill in bit by bit. The first item for discussion is what object a HoloViews
Dataset
should wrap. To me it seems most appropriate for it to wrap anyExpr
object which represents some expression on a Database, e.g. the selection of an individual Table or any other operation. The question then is what types of expressions should be supported, e.g. can or should we support aColumnExpr
or must the basic unit always represent a table.Implementation status
Core methods
init
: Basic constructorrange
: Computes the range along a columnvalues
: Returns all values along a column (or only unique values)length
: Returns number of rows in the tablenonzero
: Whether there are any rows in the tabledtype
: Return the dtype of the columnisscalar
: Checks whether column value has a single unique valueselect
: Select given boolean mask or given scalar, range or list selection(s)groupby
: Returns one or more Datasets grouped by the values along one or more columnsredim
: Rename columns in the tableiloc
: Integer indexing of rows and columnssort
: Sort by one or more columns ascending/descendingaggregate
: Aggregate along one or more columns with given function (e.g. mean, min, max)sample
: A list of selectionsWrite methods (these methods write back to the data)
add_dimension
: Add a column to the table (can this be supported?)mask
: Mask out values given a boolean maskassign
: Add or overwrite one or more columnsConversion methods
array
: Return a NumPy array of requested columnsTests Status
Passing: 73
Error: 34
Fail: 0
Skip: 16
Cc: @kcpevey @tonyfast