Skip to content

Diff-Checker Node #8

@roushan65

Description

@roushan65

Diff Checker Node

two input ports: "expected" (Table – golden/reference), "actual" (Table – from workflow).
Properties:

  • "tolerance" (number, default 0.001 – for floats),
  • "ignoreColumns" (array of strings – skip these),
  • "matchType" (dropdown: "Exact", "Superset", "Subset" – default "Exact"),
  • "keyColumns" (array of strings – optional, for Superset/Subset),
  • "failOn" (dropdown: "schema", "rows", "values", "all" – default "all"),
  • "reportLimit" (number, default 10).

Output ports: 1, "diff" (Table of mismatches; empty if match).
UI Schema: description "Compares tables; fails on mismatch. 'matchType' allows partial checks."

Behavior: Category: Testing & Validation

Example 1: Exact Match (Passes)

Properties:

  • matchType = "Exact"
  • tolerance = 0.001
  • ignoreColumns = [ { "id": 1, "name": "Alice", "age": 30.0, "score": 85.5 },
    { "id": 2, "name": "Bob", "age": 35.0, "score": 92.0 } { "id": 1, "name": "Alice", "age": 30.0005, "score": 85.5 },
    { "id": 2, "name": "Bob", "age": 35.0, "score": 92.0 }]

Expected Output:

  • "diff": empty Table
  • Workflow passes (age diff < 0.001 → match)

Example 2: Exact Fail (Floats Too Far)

Properties: same as above

Input – actual:
[{ "id": 1, "name": "Alice", "age": 30.1, "score": 85.5 },
{ "id": 2, "name": "Bob", "age": 35.0, "score": 92.0 } { "row": 0, "column": "age", "expected": 30.0, "actual": 30.1 }]

  • Workflow fails: "Mismatch: 1 error"

Example 3: Superset (Extra Row OK)

Properties:

  • matchType = "Superset"
  • keyColumns = - tolerance = 0.001

Input – expected:
[{ "id": 1, "name": "Alice", "age": 30.0 },
{ "id": 2, "name": "Bob", "age": 35.0 },
{ "id": 3, "name": "Charlie", "age": 40.0 } { "id": 1, "name": "Alice", "age": 30.0 },
{ "id": 2, "name": "Bob", "age": 35.0 }]

Expected Output:

  • "diff": empty Table
  • Workflow passes (actual is subset of expected)

Example 4: Subset Fail (Missing Row)

Properties:

  • matchType = "Subset"
  • keyColumns = Input – expected:
    [{ "id": 1, "name": "Alice" },
    { "id": 2, "name": "Bob" } ] (but workflow fails early: "Missing rows in actual")
  • Message: "Mismatch: 1 missing row"

Example 5: Ignore Column + Exact

Properties:

  • matchType = "Exact"
  • ignoreColumns = - tolerance = 0.0

Input – expected: Input – actual:
[{ "id": 1, "name": "Alice", "score": 99.9 }]

Expected Output:

  • "diff": empty Table
  • Workflow passes (score ignored)

Example 6: Schema Fail

Properties:

  • failOn = "schema"

Input – expected:
[{ "id": 1, "name": "Alice" }]

Input – actual: Expected Output:

  • Workflow fails: "Schema mismatch" (column names differ)
  • No "diff" output

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions