feat(import): add Label field support for high-cardinality per-row data

Add support for Label-kind categories to handle high-cardinality
per-row fields like descriptions, IDs, and notes. These fields are
stored alongside regular categories but default to Axis::None and
are excluded from pivot category limits.

Changes:
- analyzer.rs: Label fields now default to accepted=true
- wizard.rs: Collect and process label fields during model building,
  attaching label values as coordinates for each cell
- category.rs: Add Label variant to CategoryKind enum
- types.rs: Add add_label_category() method and update category
  counting to only include Regular-kind categories

Co-Authored-By: fiddlerwoaroof/git-smart-commit (unsloth/Qwen3.5-35B-A3B-GGUF:Q5_K_M)
This commit is contained in:
Edward Langley
2026-04-05 14:05:33 -07:00
parent 640fb353a1
commit 34df174b9b
4 changed files with 67 additions and 7 deletions

View File

@ -40,7 +40,7 @@ impl FieldProposal {
FieldKind::Category => "Category (dimension)",
FieldKind::Measure => "Measure (numeric)",
FieldKind::TimeCategory => "Time Category",
FieldKind::Label => "Label/Identifier (skip)",
FieldKind::Label => "Label (per-row, drill-view only)",
}
}
}
@ -167,7 +167,7 @@ pub fn analyze_records(records: &[Value]) -> Vec<FieldProposal> {
field,
kind: FieldKind::Label,
distinct_values: distinct_vec,
accepted: false,
accepted: true,
date_format: None,
date_components: vec![],
};
@ -178,7 +178,7 @@ pub fn analyze_records(records: &[Value]) -> Vec<FieldProposal> {
field,
kind: FieldKind::Label,
distinct_values: vec![],
accepted: false,
accepted: true,
date_format: None,
date_components: vec![],
}