feat: Improve Table Previews - #2593
Merged
Merged
Conversation
🎩 PreviewA preview build has been created at: |
Collaborator
Author
This stack of pull requests is managed by Graphite. Learn more about stacking. |
This was referenced Jul 29, 2026
camielvs
force-pushed
the
07-29-feat_parquet_improvements_2
branch
from
July 30, 2026 00:19
e484306 to
360e7b9
Compare
camielvs
force-pushed
the
07-21-feat_improve_parquet_viewer
branch
from
July 30, 2026 00:19
436b6ef to
c472ea6
Compare
camielvs
force-pushed
the
07-29-feat_parquet_improvements_2
branch
from
July 30, 2026 00:46
360e7b9 to
5613e32
Compare
camielvs
force-pushed
the
07-21-feat_improve_parquet_viewer
branch
2 times, most recently
from
July 30, 2026 14:57
d3eb937 to
99d7a62
Compare
camielvs
force-pushed
the
07-29-feat_parquet_improvements_2
branch
2 times, most recently
from
July 30, 2026 16:02
1abf10f to
f8a11f0
Compare
camielvs
marked this pull request as ready for review
July 30, 2026 16:24
camielvs
force-pushed
the
07-29-feat_parquet_improvements_2
branch
2 times, most recently
from
July 30, 2026 17:54
9d07e68 to
2c40fb0
Compare
camielvs
force-pushed
the
07-21-feat_improve_parquet_viewer
branch
from
July 30, 2026 18:23
99d7a62 to
ec1e716
Compare
camielvs
force-pushed
the
07-29-feat_parquet_improvements_2
branch
from
July 30, 2026 18:23
2c40fb0 to
227a763
Compare
Mbeaulne
reviewed
Aug 13, 2026
Mbeaulne
approved these changes
Aug 13, 2026
camielvs
force-pushed
the
07-29-feat_parquet_improvements_2
branch
from
August 13, 2026 16:46
227a763 to
05b4561
Compare
camielvs
force-pushed
the
07-21-feat_improve_parquet_viewer
branch
from
August 13, 2026 16:46
ec1e716 to
94b4602
Compare
Collaborator
Author
camielvs
changed the base branch from
07-21-feat_improve_parquet_viewer
to
graphite-base/2593
August 13, 2026 16:55
camielvs
added a commit
that referenced
this pull request
Aug 13, 2026
## What this does Improves how Parquet files are previewed in the artifact viewer. **Before:** opening a Parquet preview downloaded the whole file and then showed up to 1,000 rows. Big files were slow, and files above the preview size limit couldn't be opened at all. **Now:** the viewer reads the file in pages — it only pulls the parts it actually needs (the file's metadata plus the first rows) instead of downloading everything up front. In practice this means: - **Large files open quickly, at any size.** Because we no longer download the whole file, Parquet previews are no longer blocked by the size limit that applies to other artifact types. - **You get a fast preview of the first rows** of data as soon as it opens. - **The header shows the total row and column counts** read straight from the file. - **A "Download schema" button** lets you save the file's column layout (names, types, nullability) as a JSON file. ## Type of Change - [x] Improvement ## Test Instructions 1. Open a run that has a Parquet output artifact. 2. Select the task (or output) and open its artifact preview. 3. Confirm you see: the data preview table, the total row/column counts in the header, and a working **Download schema** button. 4. Try a large Parquet file and confirm it opens quickly — previously a file this size may have been blocked as too large to preview. ## Notes Also includes some internal cleanup raised in review: Parquet-only code was moved into its own module so non-Parquet previews (CSV/TSV) stay lightweight, and the fetch/error-handling logic that was duplicated is now shared. ## Follow-up Additional viewer affordances — incremental **Load more / Load max**, a **Download full dataset** escape hatch, and CSV/TSV row/column-count parity — are stacked on top in #2593.
camielvs
force-pushed
the
07-29-feat_parquet_improvements_2
branch
from
August 13, 2026 16:56
05b4561 to
d845047
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Description
Follow-up to #2557. This PR adds extra viewer affordances for both Parquet and CSV/TSV.
1. Load more / Load max (Parquet). The base PR previews the top 100 rows and stops. Here the viewer can pull additional pages on demand via range reads — Load more fetches the next batch, Load max fills up to the preview cap. Only the newly requested range is fetched each time; rows already loaded are never re-read, and the whole file is never downloaded.
2. Preview limit is a cell budget, not a row count. The preview table renders every cell into the DOM (no virtualization), so its cost scales with rows × columns, not rows alone. A flat 1,000-row cap therefore over-protects narrow tables and under-protects wide ones. Instead, the preview is bounded by a 50,000-cell budget: the row limit is
floor(50,000 / columnCount), with an absolute backstop of 10,000 rows so a very narrow table still can't flood the DOM. This adapts to table shape:Rows are atomic: the budget is floored to whole rows up front, so the rendered cell count never exceeds 50,000 and no partial rows are shown. The same limit applies to both Parquet (Load max) and CSV/TSV previews.
3. Download full dataset. When the preview limit is reached but the file still has more rows than are shown, the footer surfaces a Download full dataset link so the user has a clear escape hatch to the complete data (opens the signed URL for remote artifacts).
4. CSV/TSV parity. CSV/TSV previews now report the exact total row count and column count in the header, matching Parquet. Counting is done with a streaming parse (every row is counted, only the preview rows are retained). Remote CSVs get a Download full dataset link to the signed URL; inline CSV values trigger a direct file download.
Related Issue and Pull requests
Type of Change
Checklist
Test Instructions
Additional Comments