Skip to content

WSDS field name prefixing causes downstream pipeline failures #72

Description

@tig888

Problem

WSDS automatically prefixes field names with their column directory names to avoid internal collisions. However, this causes issues when merging multi-column data into flat output dictionaries that downstream code expects to access by unprefixed names.

Example

When WSDS loads a sample from multiple column directories:

  • quality.in-progress/quality_score → discovered as quality.quality_score
  • tags_ml.in-progress/quality_score → discovered as tags_ml.quality_score

When merging these into a flat output dict:

merged_row = {}
for k in sample.keys():
    merged_row[k] = sample[k]

The output contains prefixed field names:

merged_row['quality.quality_score'] = 0.95
merged_row['tags_ml.quality_score'] = 0.80

But downstream processing expects unprefixed names like quality_score. This causes:

KeyError when accessing missing columns
Silent data loss when column names don't match
Cryptic failures downstream when merging data from many column directories

Root Cause

WSDS abstracts away directory structure by embedding it in field names using . as a separator. This is transparent for single-shard access, but breaks when flattening prefixed names for downstream processing.

demo_wsds_field_collision.py

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions