-
Notifications
You must be signed in to change notification settings - Fork 31
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
feat: Create UI to Display Partitioned Tables #1663
feat: Create UI to Display Partitioned Tables #1663
Conversation
…o 1143-partitioned-table-ui
…o 1143-partitioned-table-ui
Codecov ReportAttention:
Additional details and impacted files@@ Coverage Diff @@
## main #1663 +/- ##
==========================================
- Coverage 46.48% 46.05% -0.44%
==========================================
Files 617 621 +4
Lines 37289 37430 +141
Branches 9378 9399 +21
==========================================
- Hits 17335 17237 -98
- Misses 19900 20139 +239
Partials 54 54
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
…o 1143-partitioned-table-ui
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Something awful is happening with the performance here. I can only replicate it with the parition viewer, but it might be something in core. I don't know.
Steps to reproduce:
- run this, time_table, creating new a parition on each tick
from deephaven import empty_table, time_table
simple_ticking = time_table("PT00:00:01").update([
"MyString=new String(`a`+i)",
"MyInt=new Integer(i)",
"MyLong=new Long(i)",
"MyDouble=new Double(i+i/10)",
"MyFloat=new Float(i+i/10)",
"MyBoolean=new Boolean(i%2==0)",
"MyChar= new Character((char) ((i%26)+97))",
"MyShort=new Short(Integer.toString(i%32767))",
"MyByte= new java.lang.Byte(Integer.toString(i%127))"])
p = simple_ticking.partition_by("MyString")
The key columns passed in by the js api has incorrect order, going to fix that issue in core first. This should be the cause of dropdowns not showing any options for certain column orderings independent of type. There might still more issues when dealing with null or empty values and some type-dependent issues unrelated to this. Update: fix opened at deephaven/deephaven-core#4931 |
- Use EMPTY_ARRAY instead of returning a new array each time from the EmptyGridModel - Reduces re-renders - Save the current viewport in IrisGridProxyModel, and apply it to the new model if the columns haven't changed - Clean up hydration/dehydration - Needed to dehydrate the value correctly
- Return the partitioned tables columns instead of no columns, so rehydration will succeed - Fix char type partitions - needed to create the raw filter value better
function makeModel( | ||
columns = irisGridTestUtils.makeColumns() | ||
): PartitionedGridModel { | ||
const model = { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not worth changing, but createMockProxy
could make this a bit cleaner
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Left 2 minor comments about missing async
- Add async to methods for consistency
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
…le (#5009) - Memoizing it is inconsistent with other methods like `WorkerConnection.getTable`, which always returns a new table - Was unclear who the "owner" of the returned table was - Memoization can happen at the client level if they need it - Tested with deephaven/web-client-ui#1663
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Was referencing the columns from the original table instead of the actual table - Was causing a mismatch when fetching the viewport, where it would just stall instead of throwing an error
@dsmmcken should be fixed. Also, you'll need to make sure you're on the latest |
Don's found two errors that are still occurring, both of them are because it is a ticking table starting with no partition. Using this snippet you can reproduce both issues: from deephaven import empty_table, time_table
simple_ticking = time_table("PT00:00:01").update([
"MyString=new String(`a`+i)",
"MyInt=new Integer(i)",
"MyLong=new Long(i)",
"MyDouble=new Double(i+i/10)",
"MyFloat=new Float(i+i/10)",
"MyBoolean=new Boolean(i%2==0)",
"MyChar= new Character((char) ((i%26)+97))",
"MyShort=new Short(Integer.toString(i%32767))",
"MyByte= new java.lang.Byte(Integer.toString(i%127))"])
p = simple_ticking.partition_by(["MyString", "MyInt", "MyBoolean"])
Workaround for both issues is to re-open the table. |
- Wait for a key to be added to the keys table if one does not initially exist - If the reloaded partition config is invalid, will reload the initial partition config
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good, all working now. Changed a couple color variables to theme better.
PartitionedTable
objects can now be opened and displayed with a new UITesting Instructions
PartitionedTable
pt
Parquet Tables