{ "schema_version": 1, "nodes": [ { "id": "existing", "type": "source.inline", "label": "Existing records", "position": {"x": 40, "y": 80}, "config": { "source_name": "existing_records", "fixture": "existing-records.json", "rows": [] } }, { "id": "monthly", "type": "source.inline", "label": "Monthly file", "position": {"x": 40, "y": 280}, "config": { "source_name": "monthly_file", "fixture": "monthly-file.json", "rows": [] } }, { "id": "convert-amount", "type": "convert", "label": "Convert amount", "position": {"x": 280, "y": 280}, "config": { "source_column": "amount_text", "target_column": "amount", "target_type": "integer", "on_error": "fail" } }, { "id": "monthly-fields", "type": "select", "label": "Monthly fields", "position": {"x": 520, "y": 280}, "config": { "fields": [ {"column": "case_id", "alias": "case_id"}, {"column": "status", "alias": "status"}, {"column": "amount", "alias": "amount"} ] } }, { "id": "quality", "type": "quality.rules", "label": "Required monthly fields", "position": {"x": 760, "y": 280}, "config": { "rules": [ {"id": "case-id", "column": "case_id", "operator": "not_null"}, {"id": "amount", "column": "amount", "operator": "not_null"} ], "action": "fail" } }, { "id": "reconcile", "type": "reconcile.compare", "label": "Compare monthly state", "position": {"x": 1020, "y": 160}, "config": { "left_keys": ["case_id"], "right_keys": ["case_id"], "compare_columns": ["status", "amount"], "right_prefix": "monthly_" } }, { "id": "output", "type": "output", "label": "Review differences", "position": {"x": 1260, "y": 160}, "config": {} } ], "edges": [ { "id": "e1", "source": "monthly", "target": "convert-amount" }, { "id": "e2", "source": "convert-amount", "target": "monthly-fields" }, { "id": "e3", "source": "monthly-fields", "target": "quality" }, { "id": "e4", "source": "existing", "target": "reconcile", "target_port": "left" }, { "id": "e5", "source": "quality", "target": "reconcile", "target_port": "right" }, { "id": "e6", "source": "reconcile", "target": "output" } ] }