← Anomaly Upload Validator

Anomaly Upload Validator · Specification artifact

Data Dictionary

Every field, its source schema, and how it maps across vendor, platform, and client.

the organization · Internal Tool · v2.1 · May 2026


Overview

This data dictionary defines every field processed by the Anomaly Upload Validator — from raw the source inspection platform export columns through to derived conversion output columns in the exported XLSX. It covers field names, source column mappings, data types, classification, validation rules, and conversion output targets.

Field Classification Key

Field Classification Key
ClassificationMeaning
RequiredMust be present and non-empty in every data row. Missing or invalid values raise an Error.
ConditionalOptional. No flag raised if absent or empty. Format validated only when populated.
Check InternallyRequired in principle but may exist in internal records. Empty → Check Internally flag (not Error); excluded from compliance score.
RawSource columns used only as inputs to derivation formulas. Not directly validated.
DerivedComputed by the tool from raw source columns. Written to the output XLSX as VLOOKUP formulas.

Column Alias Map

The tool normalizes the following column name variants before validation. Applied silently at ingestion.

Column Alias Map
Raw Column NameNormalized ToNotes
DateInspection Datethe Source Platform uses 'Date'; platform requires 'Inspection Date'
Blade ChamberBladeChamberSpace removed to match platform column spec
Chord (%)Chord(%)Parenthetical formatting normalized
Turbine Serial NumberSerial Numberthe Source Platform full label mapped to platform short label
LinksSource Imagesthe Source Platform uses 'Links'; platform expects 'Source Images'

Field Reference

All fields listed in the order they appear in the Damages Report output tab.

Field Reference
Field NameSource Column(s)TypeClassificationFormat / Validation RuleConversion Output
IDIDStringRequiredAny non-empty value-
SiteSiteStringRequiredAny non-empty value-
TurbineTurbineStringRequiredAny non-empty value-
AssetAssetStringCheck InternallyAny value; empty → Check Internally flag-
Serial NumberTurbine Serial Number (alias)StringConditionalNo validation; fully optional-
SeveritySeverityIntegerRequiredMust be exactly 1, 2, 3, 4, or 5-
CriticalCriticalStringRequired"Yes" or "No" (case-insensitive)-
Inspection DateDate (alias)DateRequiredMust match YYYY-MM-DD exactly-
Damage LocationDamage LocationStringRequired"Internal" or "External" (case-insensitive)-
BladeBlade / AssetStringRequiredSingle letter A–C. Extracted from Asset if absent or full label ("Blade A"→"A")-
ComponentComponentStringRawUsed in Input Component derivationInput Component (part 1)
MaterialMaterialStringRawOptional; used as suffix if presentInput Component suffix (Format A)
ElementElementStringRawOptional; used as suffix if Material absentInput Component suffix (Format B)
TypeTypeStringRawOptional; used as Damage Type base if presentInput Damage Type base (Format A)
Anomaly TypeAnomaly TypeStringRawOptional; used as base if Type absentInput Damage Type base (Format B)
SubtypeSubtypeStringRawOptional; appended to Damage Type base if non-emptyInput Damage Type suffix
Blade SideBlade SideStringRequiredLE/Leading Edge/TE/Trailing Edge/PS/Pressure Side/SS/Suction Sidethe organization + the OEM Blade Side
BladeChamberBlade Chamber (alias)StringConditionalAny value; no format rule-
Distance (m)Distance (m)DecimalRequiredNumeric; float noise cleaned to 4dp-
Length (m)Length (m)DecimalRequiredNumeric; float noise cleaned to 4dp-
Width (m)Width (m)DecimalRequiredNumeric; float noise cleaned to 4dp-
Chord(%)Chord (%) (alias)DecimalConditionalNumeric if present; float noise cleaned to 4dp-
CoordinatesCoordinatesStringCheck InternallyMust contain ≥3 [x,y] pairs; empty → Check Internally flag-
Source Image ReferenceSource Image ReferenceStringRequiredAny non-empty value (UUID expected)-
Source ImagesLinks / Source Images (alias)StringRequiredAny non-empty URL value-
Propagation TypePropagation TypeStringConditionalPreserved unchanged-
OpSeverityOpSeverityStringConditionalPreserved unchanged-
Monitoring RecommendationMonitoring RecommendationStringConditionalPreserved unchanged-
ActionActionStringConditionalPreserved unchanged-
RuleRuleStringConditionalPreserved unchanged-
TasksTasksStringConditionalPreserved unchanged-
RecommendationRecommendationStringConditionalNo format rule-

Derived Fields

Computed by the tool from raw source columns. Written as VLOOKUP formulas in the output XLSX.

Derived Fields
Field NameSourceTypeFormula / LookupOutput
Input ComponentComponent + Material or ElementStringIF(LEN(Material)>0, Component&" - "&Material, IF(LEN(Element)>0, Component&" - "&Element, Component))the organization + the OEM Element
the organization ElementInput Component (lookup)StringIFERROR(VLOOKUP(O, Conversions!A:C, 2, FALSE), "MANUAL REVIEW: "&O)Output column
the OEM ElementInput Component (lookup)StringIFERROR(VLOOKUP(O, Conversions!A:C, 3, FALSE), "MANUAL REVIEW: "&O)Output column
Input Damage TypeType/Anomaly Type + SubtypeStringIF(LEN(Subtype)>0, base&" - "&Subtype, base)the organization + the OEM Anomaly Type
the organization Anomaly TypeInput Damage Type (lookup)StringIFERROR(VLOOKUP(T, Conversions!A:C, 2, FALSE), "MANUAL REVIEW: "&T)Output column
the OEM Anomaly TypeInput Damage Type (lookup)StringIFERROR(VLOOKUP(T, Conversions!A:C, 3, FALSE), "MANUAL REVIEW: "&T)Output column
the organization Blade SideBlade Side (lookup)StringIFERROR(VLOOKUP(W, Conversions!A:C, 2, FALSE), "MANUAL REVIEW: "&W)Output column
the OEM Blade SideBlade Side (lookup)StringIFERROR(VLOOKUP(W, Conversions!A:C, 3, FALSE), "MANUAL REVIEW: "&W)Output column

Dataset Format Variations

Two distinct the source inspection platform export formats have been identified. Format is detected automatically.

Dataset Format Variations
FieldFormat A (Dataset A)Format B (Dataset B)Detection Logic
Element sourceComponent + MaterialComponent + ElementCheck if Material column exists
Element formulaComponent & " - " & MaterialComponent & " - " & ElementLEN(Material)>0 → use Material; else use Element
Damage Type sourceType + SubtypeAnomaly Type + SubtypeCheck if Type column exists
Damage Type formulaType & " - " & SubtypeAnomaly Type & " - " & SubtypeLEN(Type)>0 → use Type; else use Anomaly Type
Blade fieldEmpty — extracted from Asset"Blade A" — letter extractedRegex /Blade\s+([A-C])/i

Conversion Lookup Tables

All valid conversion mappings. These are the same tables stored in the Conversions tab of the exported XLSX.

Element / Component Conversions

Lookup key: Input Component. Conversions tab columns: A (the Source Platform) | B (the organization) | C (the OEM).

Element / Component Conversions
Input Componentthe organization Elementthe OEM Element
Blade - LaminateLaminateLaminate
Blade - StructureCore MaterialLaminate
Blade - SurfaceCoatingCoating
Blade - ThroughCore MaterialLaminate
Blade - Top CoatCoatingCoating
Drainage System - Auxiliary ComponentAccessory - Drain HoleDrain Hole
Hub - Auxiliary ComponentOtherOther
Leading Edge Protection - Auxiliary ComponentLEP - CoatingLEP - Tape
Lightning Protection System - Auxiliary ComponentLPS - OtherLPS - Other
Lightning Receptors - Auxiliary ComponentLPS - ReceptorLPS - Receptor
Other - Auxiliary ComponentOtherOther
Pitch System - Auxiliary ComponentOtherOther
Rain Collar - Auxiliary ComponentAccessory - Rain/Blade CollarAdd-on - Rain/Blade Collar
Serrations - Auxiliary ComponentAdd-on - TE SerrationsAdd-on - TE Serrations
Vortex Generators - Auxiliary ComponentAdd-on - Vortex GeneratorAdd-on - Vortex Generator

Anomaly Type Conversions

Lookup key: Input Damage Type. Conversions tab columns: A (the Source Platform) | B (the organization) | C (the OEM).

Anomaly Type Conversions
Input Damage Typethe organization Anomaly Typethe OEM Anomaly Type
BondlineDisbondCrack - Split
Bondline - CrushedCrush/ImpactDamaged Laminate - Crush/Impact Damage
ChipChipChipped Coat - Chip
Chip - LightningLightning - StrikeLightning Damage - Lightning Strike
CrackCrack - TLCCrack - Longitudinal
Crack - Bond LongitudinalCrack - LongitudinalCrack - Longitudinal
Crack - Bond TransverseCrack - TransverseCrack - Transverse
Crack - DiagonalCrack - TLCCrack - Diagonal
Crack - Fatigue CracksCrack - TransverseCrack - Transverse
Crack - LongitudinalCrack - LongitudinalCrack - Longitudinal
Crack - Spiderweb-shapedCrack - DiagonalCrack - Diagonal
Crack - T-l-c ShapedCrack - DiagonalCrack - Diagonal
Crack - Trailing TransverseCrack - TransverseCrack - Chordwise
Crack - TransverseCrack - TransverseCrack - Transverse
DamagedBrokenN/A - Damage
Damaged CoverOtherOther
Damaged Or MisalignedBent/DeformedN/A - Damage
Damaged Or ObstructedBlockageN/A - Damage
Damaged Or Obstructed - LightningBurnLightning Damage - Lightning Strike
DelaminationDelaminationDamaged Laminate - Delamination
Delamination - LightningLightning - DelaminationLightning Damage - Lightning Strike
DiscolorationDiscolorationCoat Fault - Abnormality
Discoloration - Bugs / DirtDirt/ResidueRub Mark - Dirt/Contamination
Discoloration - ScorchLightning - StrikeLightning Hit - Receptor - Lightning Strike
ErosionErosionErosion
FlakingFlakingRub Mark - Peeling/Flaking
MissingMissingN/A - Missing
OtherUnknown/OtherN/A - Unknown/Other
PinholesFlakingRub Mark - Peeling/Flaking
ScratchScratch/GougeScratch - Scratch/Gouge

Blade Side Conversions

Lookup key: Blade Side (direct lookup — no concatenation). Conversions tab columns: A (the Source Platform) | B (the organization) | C (the OEM).

Blade Side Conversions
the Source Platform Blade Sidethe organization Blade Sidethe OEM Blade Side
Suction SideSuction SideLeeward
Pressure SidePressure SideWindward
Leading EdgeLeading EdgeLeading Edge
Trailing EdgeTrailing EdgeTrailing Edge

Validation Status Reference

Validation Status Reference
StatusColorTriggerCompliance ScoreExport Gate
Error🔴 RedRequired field missing or format invalidCounts against scoreDoes not block export
Manual Review🟠 AmberConcatenated value not in conversion tableCounts against scoreBLOCKS export until resolved
Check Internally🔵 BlueAsset or Coordinates field emptyEXCLUDED from scoreDoes not block export
Warning🟡 AmberConditional field format invalidCounts against scoreDoes not block export

Compliance Score Formula

Score = ROUND( cleanRows / (totalRows - checkInternallyRows) * 100, 0 )

Where cleanRows = rows with no issues of any kind. Check Internally rows are excluded from the denominator.


Known Limitations


Anomaly Upload Validator · the organization · Internal Use Only · May 2026

← Back to the Anomaly Upload Validator case study