Data Pipeline Patterns
Filter Records
Filtering keeps only the records that match the rule for the next step.
filtering records
A filter stage copies matching records into a new list while preserving their order.
Filter Records
filter_records.py
Replay: real traced execution (multi-file project)
records = [
{"name": "Ada", "score": 92},
{"name": "Linus", "score": 78},
{"name": "Grace", "score": 86},
]
min_score = 80
passed = []
for record in records:
if record["score"] >= min_score:
passed.append(record["name"])
print("passed=" + ",".join(passed))
records = [
{"name": "Ada", "score": 92},
{"name": "Linus", "score": 78},
{"name": "Grace", "score": 86},
]
min_score = 90
passed = []
for record in records:
if record["score"] >= min_score:
passed.append(record["name"])
print("passed=" + ",".join(passed))
records ← [{'name': 'Ada', 'score': 92}, {'name': 'Linus', 'score': 78}, {'name': 'Grace', 'score': 86}]
1records→ [{'name': 'Ada', 'score': 92}, {'name': 'Linus', 'score': 78}, {'name': 'Grace', 'score': 86}] = [2 {"name": "Ada", "score": 92},3 {"name": "Linus", "score": 78},4 {"name": "Grace", "score": 86},5]67min_score→ 80 = 80 #@min_score=9089passed→ [] = []10for record in records:for record in records:
pass 1 of 39passed = []10for record{'name': 'Ada', 'score': 92} in records[{'name': 'Ada', 'score': 92}, {'name': 'Linus', 'score': 78}, {'name': 'Grace', 'score': 86}]:11 if record["score"] >= min_score:12 passed.append(record["name"])All 3 passes — pass 1 is the card above pass recordrecord[”score”]min_scorerecord[”name”]passed1 {'name': 'Ada', 'score': 92} 92 80 Ada [] → ['Ada'] 2 {'name': 'Linus', 'score': 78} — — — — 3 {'name': 'Grace', 'score': 86} 86 80 Grace ['Ada'] → ['Ada', 'Grace'] passed ← ['Ada']
pass 1 of 210for record in records:11 if record["score"]92 >= min_score80:12 passed→ ['Ada'].append(record["name"]Ada)passed ← ['Ada', 'Grace']
pass 2 of 210for record in records:11 if record["score"]86 >= min_score80:12 passed→ ['Ada', 'Grace'].append(record["name"]Grace)print("passed=" + ",".join(passed))
14print("passed=" + ",".join(passed['Ada', 'Grace']))outputpassed=Ada,Grace
records ← [{'name': 'Ada', 'score': 92}, {'name': 'Linus', 'score': 78}, {'name': 'Grace', 'score': 86}]
1records→ [{'name': 'Ada', 'score': 92}, {'name': 'Linus', 'score': 78}, {'name': 'Grace', 'score': 86}] = [2 {"name": "Ada", "score": 92},3 {"name": "Linus", "score": 78},4 {"name": "Grace", "score": 86},5]67min_score→ 90 = 9089passed→ [] = []10for record in records:for record in records:
pass 1 of 39passed = []10for record{'name': 'Ada', 'score': 92} in records[{'name': 'Ada', 'score': 92}, {'name': 'Linus', 'score': 78}, {'name': 'Grace', 'score': 86}]:11 if record["score"] >= min_score:12 passed.append(record["name"])All 3 passes — pass 1 is the card above pass recordrecord[”score”]min_scorerecord[”name”]passed1 {'name': 'Ada', 'score': 92} 92 90 Ada [] → ['Ada'] 2 {'name': 'Linus', 'score': 78} — — — — 3 {'name': 'Grace', 'score': 86} — — — — passed ← ['Ada']
10for record in records:11 if record["score"]92 >= min_score90:12 passed→ ['Ada'].append(record["name"]Ada)print("passed=" + ",".join(passed))
14print("passed=" + ",".join(passed['Ada']))outputpassed=Ada