Skip to content

Add admin facing UI for delta lake dump and spec configuration#227

Merged
bdpedigo merged 21 commits into
masterfrom
dump-ui
May 8, 2026
Merged

Add admin facing UI for delta lake dump and spec configuration#227
bdpedigo merged 21 commits into
masterfrom
dump-ui

Conversation

@bdpedigo
Copy link
Copy Markdown
Contributor

@bdpedigo bdpedigo commented May 7, 2026

This is currently deployed on LTV5

Select an export

Screenshot 2026-05-07 at 12 05 32 PM

Select output options for one or more delta lake partition/zorder/filter schemes

Screenshot 2026-05-07 at 12 05 46 PM

Confirmation

Screenshot 2026-05-07 at 12 05 53 PM

Logging

Screenshot 2026-05-07 at 12 05 59 PM

Progress for long running jobs

Screenshot 2026-05-07 at 12 06 29 PM

Success

Screenshot 2026-05-07 at 12 06 34 PM

Fail on export that already exists, general error reporting

Screenshot 2026-05-07 at 12 05 16 PM

bdpedigo and others added 11 commits May 6, 2026 10:59
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>
Co-authored-by: Copilot <copilot@github.com>
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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_export workflow 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_id and accept job_id for progress polling; adds a new deltalake blueprint 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_engine is 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 thread templates/deltalake/step2.html
Comment thread templates/deltalake/step2.html Outdated
Comment thread templates/deltalake/step3.html Outdated
Comment thread materializationengine/workflows/deltalake_export.py
Comment thread materializationengine/workflows/deltalake_export.py Outdated
Comment thread materializationengine/blueprints/deltalake/api.py Outdated
Comment thread materializationengine/blueprints/deltalake/api.py
Comment thread materializationengine/blueprints/deltalake/api.py Outdated
Comment thread materializationengine/blueprints/deltalake/api.py
Comment thread materializationengine/blueprints/deltalake/api.py
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 17 out of 18 changed files in this pull request and generated 9 comments.

Comment thread tests/test_deltalake_export.py Outdated
Comment thread materializationengine/blueprints/materialize/api.py Outdated
Comment thread materializationengine/workflows/deltalake_export.py
Comment thread materializationengine/blueprints/deltalake/api.py Outdated
Comment thread materializationengine/blueprints/deltalake/api.py Outdated
Comment thread materializationengine/blueprints/deltalake/api.py
Comment thread templates/deltalake/running_exports.html Outdated
Comment thread templates/deltalake_wizard.html Outdated
Comment thread materializationengine/workflows/deltalake_export.py Outdated
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 17 out of 18 changed files in this pull request and generated 6 comments.

Comment thread materializationengine/workflows/deltalake_export.py
Comment thread materializationengine/workflows/deltalake_export.py
Comment thread materializationengine/blueprints/deltalake/api.py Outdated
Comment thread materializationengine/blueprints/deltalake/api.py
Comment thread templates/deltalake/step2.html
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,
}),
@bdpedigo bdpedigo merged commit a500204 into master May 8, 2026
2 checks passed
@bdpedigo bdpedigo deleted the dump-ui branch May 8, 2026 16:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants