v3: gstack-code-gen 生成
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
def align_records(cobol_records: list[dict], java_records: list[dict],
|
||||
key_field: str = "CUST-ID") -> list[tuple]:
|
||||
if not cobol_records and not java_records:
|
||||
return []
|
||||
|
||||
def _by(records, kf):
|
||||
d = {}
|
||||
for r in records:
|
||||
key = str(r.get(kf, "__NONE__"))
|
||||
d.setdefault(key, []).append(r)
|
||||
return d
|
||||
|
||||
c_by = _by(cobol_records, key_field)
|
||||
j_by = _by(java_records, key_field)
|
||||
pairs = []
|
||||
all_keys = set(c_by) | set(j_by)
|
||||
|
||||
for k in sorted(all_keys):
|
||||
c_items = c_by.get(k, [])
|
||||
j_items = j_by.get(k, [])
|
||||
for i in range(max(len(c_items), len(j_items))):
|
||||
c = c_items[i] if i < len(c_items) else None
|
||||
j = j_items[i] if i < len(j_items) else None
|
||||
if c and j:
|
||||
pairs.append((c, j, "MATCHED"))
|
||||
elif c:
|
||||
pairs.append((c, None, "MISSING_IN_SPARK"))
|
||||
else:
|
||||
pairs.append((None, j, "EXTRA_IN_SPARK"))
|
||||
return pairs
|
||||
Reference in New Issue
Block a user