Data Pipeline Patterns
Input Normalization
A data pipeline often starts by trimming and reshaping input into predictable fields.
normalization
Normalizing input once gives later pipeline stages a cleaner value to use.
derived field
The slug is derived from the display name, so it stays consistent with the cleaned input.
Input Normalization
InputNormalization.java
Replay: real traced execution (multi-file project)
public class InputNormalization {
record UserLabel(String displayName, String slug) {}
static UserLabel normalize(String rawName) {
String trimmed = rawName.trim();
String displayName = trimmed.replaceAll("\\s+", " ");
String slug = displayName.toLowerCase().replaceAll("\\s+", "-");
return new UserLabel(displayName, slug);
}
public static void main(String[] args) {
String rawName = " Trace Bot ";
UserLabel label = normalize(rawName);
System.out.println("name=" + label.displayName());
System.out.println("slug=" + label.slug());
}
}
public class InputNormalization {
record UserLabel(String displayName, String slug) {}
static UserLabel normalize(String rawName) {
String trimmed = rawName.trim();
String displayName = trimmed.replaceAll("\\s+", " ");
String slug = displayName.toLowerCase().replaceAll("\\s+", "-");
return new UserLabel(displayName, slug);
}
public static void main(String[] args) {
String rawName = " Ada Lovelace ";
UserLabel label = normalize(rawName);
System.out.println("name=" + label.displayName());
System.out.println("slug=" + label.slug());
}
}
public class InputNormalization {
record UserLabel(String displayName, String slug) {}
static UserLabel normalize(String rawName) {
String trimmed = rawName.trim();
String displayName = trimmed.replaceAll("\\s+", " ");
String slug = displayName.toLowerCase().replaceAll("\\s+", "-");
return new UserLabel(displayName, slug);
}
public static void main(String[] args) {
String rawName = " Java Guide ";
UserLabel label = normalize(rawName);
System.out.println("name=" + label.displayName());
System.out.println("slug=" + label.slug());
}
}
rawName ← Trace Bot
11public static void main(String[] args) {12 String rawName→ Trace Bot = " Trace Bot "; //@rawName=" Ada Lovelace ", " Java Guide "13 UserLabel label = normalize(rawName Trace Bot );trimmed ← Trace Bot, displayName ← Trace Bot, slug ← trace-bot
4static UserLabel normalize(String rawName Trace Bot ) {5 String trimmed→ Trace Bot = rawName.trim();6 String displayName→ Trace Bot = trimmed.replaceAll("\\s+", " ");7 String slug→ trace-bot = displayName.toLowerCase().replaceAll("\\s+", "-");8 return new UserLabel(displayName, slug);9}label ← UserLabel[displayName=Trace Bot, slug=trace-bot]
12 String rawName = " Trace Bot "; //@rawName=" Ada Lovelace ", " Java Guide "13 UserLabel label→ UserLabel[displayName=Trace Bot, slug=trace-bot] = normalize(rawName Trace Bot );1415 System.out.println("name=" + label.displayName());16 System.out.println("slug=" + label.slug());17}outputname=Trace Bot slug=trace-bot
rawName ← Ada Lovelace
11public static void main(String[] args) {12 String rawName→ Ada Lovelace = " Ada Lovelace ";13 UserLabel label = normalize(rawName Ada Lovelace );trimmed ← Ada Lovelace, displayName ← Ada Lovelace, slug ← ada-lovelace
4static UserLabel normalize(String rawName Ada Lovelace ) {5 String trimmed→ Ada Lovelace = rawName.trim();6 String displayName→ Ada Lovelace = trimmed.replaceAll("\\s+", " ");7 String slug→ ada-lovelace = displayName.toLowerCase().replaceAll("\\s+", "-");8 return new UserLabel(displayName, slug);9}label ← UserLabel[displayName=Ada Lovelace, slug=ada-lovelace]
12 String rawName = " Ada Lovelace ";13 UserLabel label→ UserLabel[displayName=Ada Lovelace, slug=ada-lovelace] = normalize(rawName Ada Lovelace );1415 System.out.println("name=" + label.displayName());16 System.out.println("slug=" + label.slug());17}outputname=Ada Lovelace slug=ada-lovelace
rawName ← Java Guide
11public static void main(String[] args) {12 String rawName→ Java Guide = " Java Guide ";13 UserLabel label = normalize(rawName Java Guide );trimmed ← Java Guide, displayName ← Java Guide, slug ← java-guide
4static UserLabel normalize(String rawName Java Guide ) {5 String trimmed→ Java Guide = rawName.trim();6 String displayName→ Java Guide = trimmed.replaceAll("\\s+", " ");7 String slug→ java-guide = displayName.toLowerCase().replaceAll("\\s+", "-");8 return new UserLabel(displayName, slug);9}label ← UserLabel[displayName=Java Guide, slug=java-guide]
12 String rawName = " Java Guide ";13 UserLabel label→ UserLabel[displayName=Java Guide, slug=java-guide] = normalize(rawName Java Guide );1415 System.out.println("name=" + label.displayName());16 System.out.println("slug=" + label.slug());17}outputname=Java Guide slug=java-guide