On this page

Working with logs

Filtering, editing, and organising logs after the first import.

Filtering#

LevelWhereScopeEffect
Column filterEvents tabThe logPersisted, and re-runs the modules you have already opened on commit; the rest compute when opened.
Board filterDashboard filter barOne boardScopes every card without touching module caches.
Card optionsCard inspectorOne cardOptions the widget or dataset declares.

Operators are deliberately few: contains, equals, gte, lte, is_null, is_not_null, in. Time ranges apply to the timestamp column.

A committed filter is part of the analysis: a bottleneck ranking after excluding a resource is genuinely a ranking of what remains. Clearing it restores the full view and re-runs the modules again.

Editing#

ActionHowEffect
Edit a cellEvents tab → Edit mode → click a cell (Enter commits, Esc cancels)Rewrites the value in events.parquet and appends to the edit history.
Bulk fillSelect rows → Bulk fillOne value across many rows.
Rename an activityActivities tab → Display nameChanges the label across the app without touching the data.
Rename a columnLog settings → Source & schemaSets a display label for a column.

Every change is recorded in the log's Edit history. Re-running the import from the original discards edits — the source file is the only truth.

Data quality#

The quality view reports per-column completeness, and the events table can be restricted to rows with missing values. Both answer one question: whether a module can run on this log. The module card already names any unmet requirement:

ReasonFix
Missing required columnRemap the column roles.
Below min_events / min_casesNothing to fix — the module needs more data.
Log model mismatchUse a module that declares your log's model.
Optional module missingNothing; the card is marked Limited and the module runs with less context.

Folders#

Folders nest freely; moving one refuses to move it into its own descendant. Deleting a folder cascades to its subfolders and logs, after a confirmation that names the count. The tree supports drag-and-drop reordering and a Move to row action.

The list reads ?q= and ?status= from the URL, so a filtered view is a shareable link.

Watched folders#

A watched folder turns a directory — or an S3 prefix — into an import source.

AspectBehaviour
TriggerA poller compares the source against its ledger every 30 s (60 s in continuous mode).
Modesmanual (scan on demand), interval (every N seconds), continuous.
Deduplicationwatched_folder_files records size plus mtime (local) or ETag (S3), so each file imports once.
Source filesNever moved, renamed, or deleted.
MappingA per-format default mapping is required — there is no wizard for an unattended file.

The card per folder shows mode, interval, last scan, and a status badge (active, paused, error), with scan, pause/resume, and delete actions. For a local path, the directory must exist inside the API container — bind-mount it.

Log settings#

SectionHolds
GeneralDisplay name and description.
Column rolesRequired and optional roles with confidence hints; remap re-runs the import.
Data qualityCompleteness per column.
Source & schemaOriginal filename, format, import time, time bounds, per-column labels.
Edit historyEvery cell edit with its timestamp.
MaintenanceRe-run import, delete.