Data quality and the semantic layer

Wrong answers are often data problems rather than reasoning problems: a date stored as text, duplicate order rows or several spellings for one category. The quality report identifies those risks; the semantic layer and controlled transforms make the resulting definitions reusable.

Inspect quality

Open a dataset under Data → Files to run the read-only quality check. It reports a quality score and grade, including:

Recommendations are not automatic decisions. A duplicated order row usually does not raise an execution error; it quietly inflates totals. Confirm that duplicates are truly invalid before applying a deduplication rule.

Quality snapshots are refreshed after imports, source refreshes and re-profiling. The Data page shows both time coverage and the current health grade.

The semantic layer

Automatic profiling gives each column a machine-readable profile. In Data Mart, you can correct the business meaning:

A semantic role does not repair the underlying value. Convert text dates or numbers to the appropriate storage type first, then assign the semantic role. Gen by AI can draft names and descriptions from column names and samples; review every draft. Workspace time settings — week start, fiscal calendar and time zone — determine what phrases such as “this week” and “last quarter” mean.

Safe cleaning and reversible transforms

The quality panel can clean datasets whose rows are owned locally. Common operations include:

Each transform creates a new version, preserves the pre-transform snapshot, updates the semantic profile and invalidates cached metric runs that depend on the dataset. A write failure leaves the old version intact. The history records the operator, and the interface allows undo only for the most recent transform that is still applied; undo restores the earlier version and recalculates its dependencies.

Connector snapshot rows belong to the upstream source, so a local cleaning operation would be overwritten by the next refresh. Fix Google Sheets, Feishu, S3 or Snowflake upstream, then refresh. External (zero-copy) S3 datasets have no local rows and reject cleaning, column deletion, append and re-upload rather than pretending those changes are permanent.

Re-imports, refreshes and metric safety

Local file re-imports support Replace and Append, require matching columns and use versioned writes with rollback protection. Normal connector and URL refreshes also require an exact column match. If an upstream source adds, removes or renames columns, the refresh reports a schema mismatch; only an explicitly confirmed forced re-import rebuilds the structure, and metrics that use old columns may become invalid.

A metric's formula.datasetId is its explicit dataset link. Cleaning or undoing a transform invalidates dependent metric caches so they are recalculated. When you delete a dataset, you can keep dependent metric definitions and mark them needsData, or delete those metrics as well. A definition with no data source is not treated as runnable.

Governance boundaries

A short checklist before you build

Next