Conversation
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Adds an admin-facing Delta Lake export wizard (3-step UI) plus a “running exports” monitoring page, and extends the export workflow/API to support per-spec output settings and richer progress reporting (phase, error, log entries) keyed by a job id.
Changes:
- Introduces new Delta Lake wizard and running-exports pages (templates + Alpine.js store/components).
- Extends
deltalake_exportworkflow with per-spec fields (name,target_file_size_mb, bloom filter FPP), job-scoped Redis progress keys, and capped Redis log entries. - Updates the materialize API to return a
job_idand acceptjob_idfor progress polling; adds a newdeltalakeblueprint for wizard helper APIs (discover/recalculate/check-exists).
Reviewed changes
Copilot reviewed 17 out of 18 changed files in this pull request and generated 10 comments.
Show a summary per file
| File | Description |
|---|---|
tests/test_deltalake_export.py |
Adds unit coverage for new output spec fields and Redis progress/log payloads. |
templates/deltalake/step1.html |
Wizard step 1 UI for selecting datastack/version/table and advanced defaults. |
templates/deltalake/step2.html |
Wizard step 2 UI for editing output specs (partitioning/zorder/bloom/file size). |
templates/deltalake/step3.html |
Wizard step 3 confirmation + export launch. |
templates/deltalake/running_exports.html |
Monitoring UI for progress, phase, errors, and log tail. |
templates/deltalake_wizard.html |
Wizard container and step indicator/progress UI. |
templates/base.html |
Adds navigation links to the Delta Lake export wizard and running exports page. |
static/js/deltalakeWizardStore.js |
Alpine store for persisting wizard state and exports list in localStorage. |
static/js/deltalakeStep1.js |
Step 1 logic for fetching versions/tables, discovery, and exists checks. |
static/js/deltalakeStep2.js |
Step 2 spec editing + server-side partition recalculation call. |
static/js/deltalakeStep3.js |
Step 3 export launch (POST) and redirect to monitoring, stores job_id. |
static/js/deltalakeRunningExports.js |
Polling loop for progress endpoint (with optional job_id). |
materializationengine/workflows/deltalake_export.py |
Workflow updates: richer spec dataclass, optimize callbacks, Redis progress/logging keyed by job. |
materializationengine/blueprints/materialize/api.py |
Adds job_id to export enqueue response; supports job_id query param for progress polling. |
materializationengine/blueprints/deltalake/api.py |
New blueprint: wizard page routes + helper APIs (discover/recalc/check-exists). |
materializationengine/blueprints/deltalake/__init__.py |
Exposes the new deltalake_bp. |
materializationengine/app.py |
Registers the new deltalake blueprint; minor formatting/import ordering updates. |
.gitignore |
Ignores preview_ui.py. |
Comments suppressed due to low confidence (1)
materializationengine/workflows/deltalake_export.py:1445
- Unused import:
create_engineis imported but never referenced in this function. Removing it avoids lint noise and makes dependencies clearer.
from dynamicannotationdb.key_utils import build_segmentation_table_name
from sqlalchemy import create_engine
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+17
to
+30
| async checkExists() { | ||
| this.checkingExists = true; | ||
| const state = Alpine.store("dlWizard").state; | ||
| const specNames = state.specs.map((s) => s.name); | ||
| try { | ||
| const resp = await fetch("/materialize/deltalake/api/check-exists", { | ||
| method: "POST", | ||
| headers: { "Content-Type": "application/json" }, | ||
| body: JSON.stringify({ | ||
| datastack: state.datastack, | ||
| version: state.version, | ||
| table_name: state.tableName, | ||
| spec_names: specNames, | ||
| }), |
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.
This is currently deployed on LTV5
Select an export
Select output options for one or more delta lake partition/zorder/filter schemes
Confirmation
Logging
Progress for long running jobs
Success
Fail on export that already exists, general error reporting