Files

20-matching-MN-to-MxN

电信业务场景

CDR详细清单M:N→M×N。多个合同×多个通话明细的笛卡尔积组合,输出完整的CDR详细清单(M×N件)。

M:N matching — Cartesian product output (M x N records per matching key).

Tests the scenario where both input files may contain duplicate keys and every combination of matching master and detail records must be output (the full Cartesian product).

Test data

File Records Keys
master.dat 5 KEY00001 (x2), KEY00002 (x1), KEY00003 (x2)
detail.dat 7 KEY00001 (x3), KEY00003 (x2), KEY00004 (x2)
  • KEY00001: 2 masters x 3 details = 6 output records
  • KEY00003: 2 masters x 2 details = 4 output records
  • Total output: 10 records
  • Unmatched: KEY00002 (master only), KEY00004 (detail only)

Algorithm

  1. Read both files synchronously (both assumed sorted by key).
  2. When keys match: read all master records for that key into a table, read all detail records for that key into a table, then write M x N output records covering every combination.
  3. Unmatched groups are skipped via the standard key-comparison logic.

Expected output

  • output.dat: 10 records x 45 bytes = 450 bytes
  • Program displays: 20-matching-MN-to-MxN: PASS
  • Script displays: 20-matching-MN-to-MxN: ALL TESTS PASSED