Skip to content
Developer Edition runs on one host and does not require a product license file. Need multi-host deployment or performance testing at scale? Explore Enterprise Edition

All Pairs Shortest Path

Algorithm introduction

All-pairs shortest path computes shortest distances between every pair of nodes in the graph.

Compute the classical Floyd-Warshall all-pairs shortest-path distance matrix on a directed weighted graph whose node primary key is id and edge weight property is weight. Unreachable pairs are returned as inf. The graph must not contain a negative cycle.

For more information, see All Pairs Shortest Path.

Data model

To implement the All Pairs Shortest Path algorithm in GQL, the following data model is used to create a graph type:

  • Entities are represented by nodes of type Node, with properties id and rating.
  • Relationships are represented by edges of type Link, with property weight.

For the complete definition of the graph type, see Prepare graph data.

Procedure implementation

To compute All Pairs Shortest Path results, a procedure is created.

For more information about the procedure, see Procedure implementation. The following section describes the key components of the procedure and how it works.

The procedure takes the following input parameters:

  • This procedure does not require input parameters.

Additionally, the following variables are defined within the procedure:

Variable name Variable type Description
vertex_ids Global SumAgg aggregator value variable List of all node IDs used as Floyd-Warshall pivot sequence.
inf Primitive value variable Infinity sentinel for unreachable node pairs.
k_idx Primitive value variable Index into vertex_ids for the current pivot.
mid_id Primitive value variable Current pivot node ID in Floyd-Warshall relaxation.
k_row Global SumAgg aggregator value variable Global map of {node_id → distance from pivot} for the current pivot row.
dist Node-attached SumAgg aggregator value variable Per-node map of {target_id → shortest distance} to all other nodes.
result_table Table variable Output table storing (src_id, dst_id, dist) triplets.

The following steps outline the logic of the procedure:

  1. Collect all node IDs into vertex_ids; initialize each node's dist map with direct edge weights and infinity for unreachable pairs.
  2. Iterate over each node as Floyd-Warshall pivot (mid_id): load the pivot's distance row into k_row.
  3. For every node pair (i, j), relax dist[i][j] through the pivot: dist[i][j] = min(dist[i][j], dist[i][mid] + k_row[j]).
  4. Export all reachable (src_id, dst_id, distance) triples and return them.

Steps

Run the following code blocks in order in the NebulaGraph Studio CONSOLE. For first-time setup, follow Prepare algorithm sample data to check where to run commands and how the directory is mounted.

1. Prepare graph data

  1. Create a graph type that matches your data model.

    '''
    CREATE GRAPH TYPE IF NOT EXISTS all_pairs_shortest_path_graph_type AS {
        NODE Node (LABEL Node {id INT PRIMARY KEY, rating INT}),
        EDGE Link (Node)-[LABEL Link {weight INT, MULTIEDGE KEY()}]->(Node)
    }
    '''
    
  2. Download these CSV files and save them with their original names in examples/algorithms/all_pairs_shortest_path/ under your deployment directory:

    Preview the CSV files
    all_pairs_shortest_path_node.csv
    id,rating
    1,0
    2,2
    3,1
    4,0
    5,0
    6,2
    7,1
    8,2
    9,0
    10,1
    11,0
    12,2
    13,1
    14,1
    15,0
    16,2
    17,0
    18,1
    19,2
    20,0
    21,2
    22,1
    23,0
    24,1
    
    all_pairs_shortest_path_edge.csv
    src_id,dst_id,weight
    1,2,4
    1,3,2
    1,4,7
    1,5,9
    2,3,1
    2,4,6
    2,5,5
    2,6,2
    3,4,3
    3,5,4
    3,6,8
    4,6,2
    4,7,6
    4,8,5
    5,6,4
    5,8,7
    5,9,6
    6,8,1
    6,9,5
    6,10,6
    7,9,2
    7,10,9
    8,9,3
    8,11,6
    8,12,4
    9,10,4
    9,12,7
    9,13,2
    10,12,1
    10,13,8
    10,14,4
    11,12,2
    11,14,5
    11,15,7
    12,14,3
    12,15,6
    12,16,5
    13,15,2
    13,16,7
    14,15,4
    14,17,8
    14,18,2
    15,16,1
    15,18,5
    15,19,3
    16,18,3
    16,19,6
    17,18,2
    17,20,7
    17,21,5
    18,19,4
    18,21,9
    18,22,6
    19,21,1
    19,22,5
    20,21,3
    20,23,6
    20,24,8
    21,22,2
    21,23,4
    21,24,7
    22,24,4
    23,24,1
    
  3. Create a temporary graph based on the graph type and load the data files into the temporary graph.

    CREATE TEMPORARY GRAPH IF NOT EXISTS #all_pairs_shortest_path_graph TYPED all_pairs_shortest_path_graph_type
    
    '''
    USE #all_pairs_shortest_path_graph IMPORT INTO GRAPH {
          NODE (v@Node {id: id, rating: rating}) FROM DATAFILE {
              PATH: "file:///examples/algorithms/all_pairs_shortest_path/all_pairs_shortest_path_node.csv",
              FORMAT: "CSV",
              DELIMITER: ','
          },
          EDGE (id: src_id)-[e@Link {weight: weight}]->(id: dst_id) FROM DATAFILE {
              PATH: "file:///examples/algorithms/all_pairs_shortest_path/all_pairs_shortest_path_edge.csv",
              FORMAT: "CSV",
              DELIMITER: ','
          }
      }
    '''
    

    After the import succeeds, run this query in the console to check the node count:

    '''
    USE #all_pairs_shortest_path_graph
    MATCH (n)
    RETURN count(n) AS node_count
    '''
    

    The expected node_count is 24. If it differs, check the files and import results before continuing.

2. Create a procedure

Create a procedure to implement the All Pairs Shortest Path algorithm. For more information about the procedure, see Procedure implementation.

'''
CREATE OR REPLACE PROCEDURE all_pairs_shortest_path()
RETURNS (source_id INT64, target_id INT64, distance DOUBLE)
COMMENT "Compute the classical Floyd-Warshall all-pairs shortest-path distance matrix on a directed weighted graph whose vertex primary key is id and edge weight property is weight. Unreachable pairs are returned as inf. The graph must not contain a negative cycle."
AS {
  VALUE vertex_ids ListAgg<INT64>
  VALUE inf DOUBLE = 1000000000000000000.0
  VALUE k_idx INT64 = 0
  VALUE mid_id INT64 = 0
  VALUE k_row MapAgg<INT64, MinAgg<DOUBLE>>

  NODE VALUE dist MapAgg<INT64, MinAgg<DOUBLE>>

  TABLE result_table TYPED TABLE {
    source_id INT64,
    target_id INT64,
    distance DOUBLE
  }

  MATCH (n)
  PER NODE (n) {
    SET @vertex_ids += n.id
    SET n.@dist.clear()
    SET n.@dist += TUPLE(n.id, 0.0)
  }

  MATCH (s)-[e]->(t)
  PER PATH {
    SET s.@dist += TUPLE(t.id, CAST(e.weight AS DOUBLE))
  }

  WHILE k_idx < @vertex_ids.size() THEN {
    SET mid_id = @vertex_ids[k_idx]
    SET k_idx = k_idx + 1
    SET @k_row.clear()

    MATCH (k)
    WHERE k.id = mid_id
    PER NODE (k) {
      VALUE row_idx INT64 = 0

      WHILE row_idx < k.@dist.size() THEN {
        SET @k_row += TUPLE((k.@dist[row_idx])._0, (k.@dist[row_idx])._1)
        SET row_idx = row_idx + 1
      }
    }

    MATCH (s)
    WHERE s.@dist.contains_key(mid_id)
    PER NODE (s) {
      VALUE via_k DOUBLE = 0.0
      VALUE row_idx INT64 = 0
      VALUE row_size INT64 = 0
      VALUE target_id INT64 = 0
      VALUE candidate DOUBLE = 0.0

      SET via_k = s.@dist.get(mid_id)
      SET row_size = CAST(@k_row.size() AS INT64)

      WHILE row_idx < row_size THEN {
        SET target_id = (@k_row[row_idx])._0
        SET candidate = via_k + (@k_row[row_idx])._1

        IF s.@dist.contains_key(target_id) = false OR candidate < s.@dist.get(target_id) THEN {
          SET s.@dist += TUPLE(target_id, candidate)
        }

        SET row_idx = row_idx + 1
      }
    }
  }

  MATCH (s)
  PER NODE (s) {
    VALUE idx INT64 = 0
    VALUE target_id INT64 = 0

    WHILE idx < @vertex_ids.size() THEN {
      SET target_id = @vertex_ids[idx]

      IF s.@dist.contains_key(target_id) THEN {
        EXPORT s.id, target_id, s.@dist.get(target_id) INTO result_table
      }
      ELSE {
        EXPORT s.id, target_id, inf INTO result_table
      }

      SET idx = idx + 1
    }
  }

  FOR r IN result_table
  RETURN
    r.source_id AS source_id,
    r.target_id AS target_id,
    r.distance AS distance
  ORDER BY source_id ASC, target_id ASC
}
'''

3. Call your procedure

Compute shortest-path distances for all node pairs. Each row contains a source, a target, and their distance.

USE #all_pairs_shortest_path_graph CALL all_pairs_shortest_path() RETURN source_id, target_id, distance

Returns:

Expand to view results
+-----------+-----------+----------+
| source_id | target_id | distance |
+-----------+-----------+----------+
| 1         | 1         | 0.0      |
| 1         | 2         | 4.0      |
| 1         | 3         | 2.0      |
| 1         | 4         | 5.0      |
| 1         | 5         | 6.0      |
| 1         | 6         | 6.0      |
| 1         | 7         | 11.0     |
| 1         | 8         | 7.0      |
| 1         | 9         | 10.0     |
| 1         | 10        | 12.0     |
| 1         | 11        | 13.0     |
| 1         | 12        | 11.0     |
| 1         | 13        | 12.0     |
| 1         | 14        | 14.0     |
| 1         | 15        | 14.0     |
| 1         | 16        | 15.0     |
| 1         | 17        | 22.0     |
| 1         | 18        | 16.0     |
| 1         | 19        | 17.0     |
| 1         | 20        | 29.0     |
| 1         | 21        | 18.0     |
| 1         | 22        | 20.0     |
| 1         | 23        | 22.0     |
| 1         | 24        | 23.0     |
| 2         | 1         | 1e+18    |
| 2         | 2         | 0.0      |
| 2         | 3         | 1.0      |
| 2         | 4         | 4.0      |
| 2         | 5         | 5.0      |
| 2         | 6         | 2.0      |
| 2         | 7         | 10.0     |
| 2         | 8         | 3.0      |
| 2         | 9         | 6.0      |
| 2         | 10        | 8.0      |
| 2         | 11        | 9.0      |
| 2         | 12        | 7.0      |
| 2         | 13        | 8.0      |
| 2         | 14        | 10.0     |
| 2         | 15        | 10.0     |
| 2         | 16        | 11.0     |
| 2         | 17        | 18.0     |
| 2         | 18        | 12.0     |
| 2         | 19        | 13.0     |
| 2         | 20        | 25.0     |
| 2         | 21        | 14.0     |
| 2         | 22        | 16.0     |
| 2         | 23        | 18.0     |
| 2         | 24        | 19.0     |
| 3         | 1         | 1e+18    |
| 3         | 2         | 1e+18    |
| 3         | 3         | 0.0      |
| 3         | 4         | 3.0      |
| 3         | 5         | 4.0      |
| 3         | 6         | 5.0      |
| 3         | 7         | 9.0      |
| 3         | 8         | 6.0      |
| 3         | 9         | 9.0      |
| 3         | 10        | 11.0     |
| 3         | 11        | 12.0     |
| 3         | 12        | 10.0     |
| 3         | 13        | 11.0     |
| 3         | 14        | 13.0     |
| 3         | 15        | 13.0     |
| 3         | 16        | 14.0     |
| 3         | 17        | 21.0     |
| 3         | 18        | 15.0     |
| 3         | 19        | 16.0     |
| 3         | 20        | 28.0     |
| 3         | 21        | 17.0     |
| 3         | 22        | 19.0     |
| 3         | 23        | 21.0     |
| 3         | 24        | 22.0     |
| 4         | 1         | 1e+18    |
| 4         | 2         | 1e+18    |
| 4         | 3         | 1e+18    |
| 4         | 4         | 0.0      |
| 4         | 5         | 1e+18    |
| 4         | 6         | 2.0      |
| 4         | 7         | 6.0      |
| 4         | 8         | 3.0      |
| 4         | 9         | 6.0      |
| 4         | 10        | 8.0      |
| 4         | 11        | 9.0      |
| 4         | 12        | 7.0      |
| 4         | 13        | 8.0      |
| 4         | 14        | 10.0     |
| 4         | 15        | 10.0     |
| 4         | 16        | 11.0     |
| 4         | 17        | 18.0     |
| 4         | 18        | 12.0     |
| 4         | 19        | 13.0     |
| 4         | 20        | 25.0     |
| 4         | 21        | 14.0     |
| 4         | 22        | 16.0     |
| 4         | 23        | 18.0     |
| 4         | 24        | 19.0     |
| 5         | 1         | 1e+18    |
| 5         | 2         | 1e+18    |
| 5         | 3         | 1e+18    |
| 5         | 4         | 1e+18    |
| 5         | 5         | 0.0      |
| 5         | 6         | 4.0      |
| 5         | 7         | 1e+18    |
| 5         | 8         | 5.0      |
| 5         | 9         | 6.0      |
| 5         | 10        | 10.0     |
| 5         | 11        | 11.0     |
| 5         | 12        | 9.0      |
| 5         | 13        | 8.0      |
| 5         | 14        | 12.0     |
| 5         | 15        | 10.0     |
| 5         | 16        | 11.0     |
| 5         | 17        | 20.0     |
| 5         | 18        | 14.0     |
| 5         | 19        | 13.0     |
| 5         | 20        | 27.0     |
| 5         | 21        | 14.0     |
| 5         | 22        | 16.0     |
| 5         | 23        | 18.0     |
| 5         | 24        | 19.0     |
| 6         | 1         | 1e+18    |
| 6         | 2         | 1e+18    |
| 6         | 3         | 1e+18    |
| 6         | 4         | 1e+18    |
| 6         | 5         | 1e+18    |
| 6         | 6         | 0.0      |
| 6         | 7         | 1e+18    |
| 6         | 8         | 1.0      |
| 6         | 9         | 4.0      |
| 6         | 10        | 6.0      |
| 6         | 11        | 7.0      |
| 6         | 12        | 5.0      |
| 6         | 13        | 6.0      |
| 6         | 14        | 8.0      |
| 6         | 15        | 8.0      |
| 6         | 16        | 9.0      |
| 6         | 17        | 16.0     |
| 6         | 18        | 10.0     |
| 6         | 19        | 11.0     |
| 6         | 20        | 23.0     |
| 6         | 21        | 12.0     |
| 6         | 22        | 14.0     |
| 6         | 23        | 16.0     |
| 6         | 24        | 17.0     |
| 7         | 1         | 1e+18    |
| 7         | 2         | 1e+18    |
| 7         | 3         | 1e+18    |
| 7         | 4         | 1e+18    |
| 7         | 5         | 1e+18    |
| 7         | 6         | 1e+18    |
| 7         | 7         | 0.0      |
| 7         | 8         | 1e+18    |
| 7         | 9         | 2.0      |
| 7         | 10        | 6.0      |
| 7         | 11        | 1e+18    |
| 7         | 12        | 7.0      |
| 7         | 13        | 4.0      |
| 7         | 14        | 10.0     |
| 7         | 15        | 6.0      |
| 7         | 16        | 7.0      |
| 7         | 17        | 18.0     |
| 7         | 18        | 10.0     |
| 7         | 19        | 9.0      |
| 7         | 20        | 25.0     |
| 7         | 21        | 10.0     |
| 7         | 22        | 12.0     |
| 7         | 23        | 14.0     |
| 7         | 24        | 15.0     |
| 8         | 1         | 1e+18    |
| 8         | 2         | 1e+18    |
| 8         | 3         | 1e+18    |
| 8         | 4         | 1e+18    |
| 8         | 5         | 1e+18    |
| 8         | 6         | 1e+18    |
| 8         | 7         | 1e+18    |
| 8         | 8         | 0.0      |
| 8         | 9         | 3.0      |
| 8         | 10        | 7.0      |
| 8         | 11        | 6.0      |
| 8         | 12        | 4.0      |
| 8         | 13        | 5.0      |
| 8         | 14        | 7.0      |
| 8         | 15        | 7.0      |
| 8         | 16        | 8.0      |
| 8         | 17        | 15.0     |
| 8         | 18        | 9.0      |
| 8         | 19        | 10.0     |
| 8         | 20        | 22.0     |
| 8         | 21        | 11.0     |
| 8         | 22        | 13.0     |
| 8         | 23        | 15.0     |
| 8         | 24        | 16.0     |
| 9         | 1         | 1e+18    |
| 9         | 2         | 1e+18    |
| 9         | 3         | 1e+18    |
| 9         | 4         | 1e+18    |
| 9         | 5         | 1e+18    |
| 9         | 6         | 1e+18    |
| 9         | 7         | 1e+18    |
| 9         | 8         | 1e+18    |
| 9         | 9         | 0.0      |
| 9         | 10        | 4.0      |
| 9         | 11        | 1e+18    |
| 9         | 12        | 5.0      |
| 9         | 13        | 2.0      |
| 9         | 14        | 8.0      |
| 9         | 15        | 4.0      |
| 9         | 16        | 5.0      |
| 9         | 17        | 16.0     |
| 9         | 18        | 8.0      |
| 9         | 19        | 7.0      |
| 9         | 20        | 23.0     |
| 9         | 21        | 8.0      |
| 9         | 22        | 10.0     |
| 9         | 23        | 12.0     |
| 9         | 24        | 13.0     |
| 10        | 1         | 1e+18    |
| 10        | 2         | 1e+18    |
| 10        | 3         | 1e+18    |
| 10        | 4         | 1e+18    |
| 10        | 5         | 1e+18    |
| 10        | 6         | 1e+18    |
| 10        | 7         | 1e+18    |
| 10        | 8         | 1e+18    |
| 10        | 9         | 1e+18    |
| 10        | 10        | 0.0      |
| 10        | 11        | 1e+18    |
| 10        | 12        | 1.0      |
| 10        | 13        | 8.0      |
| 10        | 14        | 4.0      |
| 10        | 15        | 7.0      |
| 10        | 16        | 6.0      |
| 10        | 17        | 12.0     |
| 10        | 18        | 6.0      |
| 10        | 19        | 10.0     |
| 10        | 20        | 19.0     |
| 10        | 21        | 11.0     |
| 10        | 22        | 12.0     |
| 10        | 23        | 15.0     |
| 10        | 24        | 16.0     |
| 11        | 1         | 1e+18    |
| 11        | 2         | 1e+18    |
| 11        | 3         | 1e+18    |
| 11        | 4         | 1e+18    |
| 11        | 5         | 1e+18    |
| 11        | 6         | 1e+18    |
| 11        | 7         | 1e+18    |
| 11        | 8         | 1e+18    |
| 11        | 9         | 1e+18    |
| 11        | 10        | 1e+18    |
| 11        | 11        | 0.0      |
| 11        | 12        | 2.0      |
| 11        | 13        | 1e+18    |
| 11        | 14        | 5.0      |
| 11        | 15        | 7.0      |
| 11        | 16        | 7.0      |
| 11        | 17        | 13.0     |
| 11        | 18        | 7.0      |
| 11        | 19        | 10.0     |
| 11        | 20        | 20.0     |
| 11        | 21        | 11.0     |
| 11        | 22        | 13.0     |
| 11        | 23        | 15.0     |
| 11        | 24        | 16.0     |
| 12        | 1         | 1e+18    |
| 12        | 2         | 1e+18    |
| 12        | 3         | 1e+18    |
| 12        | 4         | 1e+18    |
| 12        | 5         | 1e+18    |
| 12        | 6         | 1e+18    |
| 12        | 7         | 1e+18    |
| 12        | 8         | 1e+18    |
| 12        | 9         | 1e+18    |
| 12        | 10        | 1e+18    |
| 12        | 11        | 1e+18    |
| 12        | 12        | 0.0      |
| 12        | 13        | 1e+18    |
| 12        | 14        | 3.0      |
| 12        | 15        | 6.0      |
| 12        | 16        | 5.0      |
| 12        | 17        | 11.0     |
| 12        | 18        | 5.0      |
| 12        | 19        | 9.0      |
| 12        | 20        | 18.0     |
| 12        | 21        | 10.0     |
| 12        | 22        | 11.0     |
| 12        | 23        | 14.0     |
| 12        | 24        | 15.0     |
| 13        | 1         | 1e+18    |
| 13        | 2         | 1e+18    |
| 13        | 3         | 1e+18    |
| 13        | 4         | 1e+18    |
| 13        | 5         | 1e+18    |
| 13        | 6         | 1e+18    |
| 13        | 7         | 1e+18    |
| 13        | 8         | 1e+18    |
| 13        | 9         | 1e+18    |
| 13        | 10        | 1e+18    |
| 13        | 11        | 1e+18    |
| 13        | 12        | 1e+18    |
| 13        | 13        | 0.0      |
| 13        | 14        | 1e+18    |
| 13        | 15        | 2.0      |
| 13        | 16        | 3.0      |
| 13        | 17        | 1e+18    |
| 13        | 18        | 6.0      |
| 13        | 19        | 5.0      |
| 13        | 20        | 1e+18    |
| 13        | 21        | 6.0      |
| 13        | 22        | 8.0      |
| 13        | 23        | 10.0     |
| 13        | 24        | 11.0     |
| 14        | 1         | 1e+18    |
| 14        | 2         | 1e+18    |
| 14        | 3         | 1e+18    |
| 14        | 4         | 1e+18    |
| 14        | 5         | 1e+18    |
| 14        | 6         | 1e+18    |
| 14        | 7         | 1e+18    |
| 14        | 8         | 1e+18    |
| 14        | 9         | 1e+18    |
| 14        | 10        | 1e+18    |
| 14        | 11        | 1e+18    |
| 14        | 12        | 1e+18    |
| 14        | 13        | 1e+18    |
| 14        | 14        | 0.0      |
| 14        | 15        | 4.0      |
| 14        | 16        | 5.0      |
| 14        | 17        | 8.0      |
| 14        | 18        | 2.0      |
| 14        | 19        | 6.0      |
| 14        | 20        | 15.0     |
| 14        | 21        | 7.0      |
| 14        | 22        | 8.0      |
| 14        | 23        | 11.0     |
| 14        | 24        | 12.0     |
| 15        | 1         | 1e+18    |
| 15        | 2         | 1e+18    |
| 15        | 3         | 1e+18    |
| 15        | 4         | 1e+18    |
| 15        | 5         | 1e+18    |
| 15        | 6         | 1e+18    |
| 15        | 7         | 1e+18    |
| 15        | 8         | 1e+18    |
| 15        | 9         | 1e+18    |
| 15        | 10        | 1e+18    |
| 15        | 11        | 1e+18    |
| 15        | 12        | 1e+18    |
| 15        | 13        | 1e+18    |
| 15        | 14        | 1e+18    |
| 15        | 15        | 0.0      |
| 15        | 16        | 1.0      |
| 15        | 17        | 1e+18    |
| 15        | 18        | 4.0      |
| 15        | 19        | 3.0      |
| 15        | 20        | 1e+18    |
| 15        | 21        | 4.0      |
| 15        | 22        | 6.0      |
| 15        | 23        | 8.0      |
| 15        | 24        | 9.0      |
| 16        | 1         | 1e+18    |
| 16        | 2         | 1e+18    |
| 16        | 3         | 1e+18    |
| 16        | 4         | 1e+18    |
| 16        | 5         | 1e+18    |
| 16        | 6         | 1e+18    |
| 16        | 7         | 1e+18    |
| 16        | 8         | 1e+18    |
| 16        | 9         | 1e+18    |
| 16        | 10        | 1e+18    |
| 16        | 11        | 1e+18    |
| 16        | 12        | 1e+18    |
| 16        | 13        | 1e+18    |
| 16        | 14        | 1e+18    |
| 16        | 15        | 1e+18    |
| 16        | 16        | 0.0      |
| 16        | 17        | 1e+18    |
| 16        | 18        | 3.0      |
| 16        | 19        | 6.0      |
| 16        | 20        | 1e+18    |
| 16        | 21        | 7.0      |
| 16        | 22        | 9.0      |
| 16        | 23        | 11.0     |
| 16        | 24        | 12.0     |
| 17        | 1         | 1e+18    |
| 17        | 2         | 1e+18    |
| 17        | 3         | 1e+18    |
| 17        | 4         | 1e+18    |
| 17        | 5         | 1e+18    |
| 17        | 6         | 1e+18    |
| 17        | 7         | 1e+18    |
| 17        | 8         | 1e+18    |
| 17        | 9         | 1e+18    |
| 17        | 10        | 1e+18    |
| 17        | 11        | 1e+18    |
| 17        | 12        | 1e+18    |
| 17        | 13        | 1e+18    |
| 17        | 14        | 1e+18    |
| 17        | 15        | 1e+18    |
| 17        | 16        | 1e+18    |
| 17        | 17        | 0.0      |
| 17        | 18        | 2.0      |
| 17        | 19        | 6.0      |
| 17        | 20        | 7.0      |
| 17        | 21        | 5.0      |
| 17        | 22        | 7.0      |
| 17        | 23        | 9.0      |
| 17        | 24        | 10.0     |
| 18        | 1         | 1e+18    |
| 18        | 2         | 1e+18    |
| 18        | 3         | 1e+18    |
| 18        | 4         | 1e+18    |
| 18        | 5         | 1e+18    |
| 18        | 6         | 1e+18    |
| 18        | 7         | 1e+18    |
| 18        | 8         | 1e+18    |
| 18        | 9         | 1e+18    |
| 18        | 10        | 1e+18    |
| 18        | 11        | 1e+18    |
| 18        | 12        | 1e+18    |
| 18        | 13        | 1e+18    |
| 18        | 14        | 1e+18    |
| 18        | 15        | 1e+18    |
| 18        | 16        | 1e+18    |
| 18        | 17        | 1e+18    |
| 18        | 18        | 0.0      |
| 18        | 19        | 4.0      |
| 18        | 20        | 1e+18    |
| 18        | 21        | 5.0      |
| 18        | 22        | 6.0      |
| 18        | 23        | 9.0      |
| 18        | 24        | 10.0     |
| 19        | 1         | 1e+18    |
| 19        | 2         | 1e+18    |
| 19        | 3         | 1e+18    |
| 19        | 4         | 1e+18    |
| 19        | 5         | 1e+18    |
| 19        | 6         | 1e+18    |
| 19        | 7         | 1e+18    |
| 19        | 8         | 1e+18    |
| 19        | 9         | 1e+18    |
| 19        | 10        | 1e+18    |
| 19        | 11        | 1e+18    |
| 19        | 12        | 1e+18    |
| 19        | 13        | 1e+18    |
| 19        | 14        | 1e+18    |
| 19        | 15        | 1e+18    |
| 19        | 16        | 1e+18    |
| 19        | 17        | 1e+18    |
| 19        | 18        | 1e+18    |
| 19        | 19        | 0.0      |
| 19        | 20        | 1e+18    |
| 19        | 21        | 1.0      |
| 19        | 22        | 3.0      |
| 19        | 23        | 5.0      |
| 19        | 24        | 6.0      |
| 20        | 1         | 1e+18    |
| 20        | 2         | 1e+18    |
| 20        | 3         | 1e+18    |
| 20        | 4         | 1e+18    |
| 20        | 5         | 1e+18    |
| 20        | 6         | 1e+18    |
| 20        | 7         | 1e+18    |
| 20        | 8         | 1e+18    |
| 20        | 9         | 1e+18    |
| 20        | 10        | 1e+18    |
| 20        | 11        | 1e+18    |
| 20        | 12        | 1e+18    |
| 20        | 13        | 1e+18    |
| 20        | 14        | 1e+18    |
| 20        | 15        | 1e+18    |
| 20        | 16        | 1e+18    |
| 20        | 17        | 1e+18    |
| 20        | 18        | 1e+18    |
| 20        | 19        | 1e+18    |
| 20        | 20        | 0.0      |
| 20        | 21        | 3.0      |
| 20        | 22        | 5.0      |
| 20        | 23        | 6.0      |
| 20        | 24        | 7.0      |
| 21        | 1         | 1e+18    |
| 21        | 2         | 1e+18    |
| 21        | 3         | 1e+18    |
| 21        | 4         | 1e+18    |
| 21        | 5         | 1e+18    |
| 21        | 6         | 1e+18    |
| 21        | 7         | 1e+18    |
| 21        | 8         | 1e+18    |
| 21        | 9         | 1e+18    |
| 21        | 10        | 1e+18    |
| 21        | 11        | 1e+18    |
| 21        | 12        | 1e+18    |
| 21        | 13        | 1e+18    |
| 21        | 14        | 1e+18    |
| 21        | 15        | 1e+18    |
| 21        | 16        | 1e+18    |
| 21        | 17        | 1e+18    |
| 21        | 18        | 1e+18    |
| 21        | 19        | 1e+18    |
| 21        | 20        | 1e+18    |
| 21        | 21        | 0.0      |
| 21        | 22        | 2.0      |
| 21        | 23        | 4.0      |
| 21        | 24        | 5.0      |
| 22        | 1         | 1e+18    |
| 22        | 2         | 1e+18    |
| 22        | 3         | 1e+18    |
| 22        | 4         | 1e+18    |
| 22        | 5         | 1e+18    |
| 22        | 6         | 1e+18    |
| 22        | 7         | 1e+18    |
| 22        | 8         | 1e+18    |
| 22        | 9         | 1e+18    |
| 22        | 10        | 1e+18    |
| 22        | 11        | 1e+18    |
| 22        | 12        | 1e+18    |
| 22        | 13        | 1e+18    |
| 22        | 14        | 1e+18    |
| 22        | 15        | 1e+18    |
| 22        | 16        | 1e+18    |
| 22        | 17        | 1e+18    |
| 22        | 18        | 1e+18    |
| 22        | 19        | 1e+18    |
| 22        | 20        | 1e+18    |
| 22        | 21        | 1e+18    |
| 22        | 22        | 0.0      |
| 22        | 23        | 1e+18    |
| 22        | 24        | 4.0      |
| 23        | 1         | 1e+18    |
| 23        | 2         | 1e+18    |
| 23        | 3         | 1e+18    |
| 23        | 4         | 1e+18    |
| 23        | 5         | 1e+18    |
| 23        | 6         | 1e+18    |
| 23        | 7         | 1e+18    |
| 23        | 8         | 1e+18    |
| 23        | 9         | 1e+18    |
| 23        | 10        | 1e+18    |
| 23        | 11        | 1e+18    |
| 23        | 12        | 1e+18    |
| 23        | 13        | 1e+18    |
| 23        | 14        | 1e+18    |
| 23        | 15        | 1e+18    |
| 23        | 16        | 1e+18    |
| 23        | 17        | 1e+18    |
| 23        | 18        | 1e+18    |
| 23        | 19        | 1e+18    |
| 23        | 20        | 1e+18    |
| 23        | 21        | 1e+18    |
| 23        | 22        | 1e+18    |
| 23        | 23        | 0.0      |
| 23        | 24        | 1.0      |
| 24        | 1         | 1e+18    |
| 24        | 2         | 1e+18    |
| 24        | 3         | 1e+18    |
| 24        | 4         | 1e+18    |
| 24        | 5         | 1e+18    |
| 24        | 6         | 1e+18    |
| 24        | 7         | 1e+18    |
| 24        | 8         | 1e+18    |
| 24        | 9         | 1e+18    |
| 24        | 10        | 1e+18    |
| 24        | 11        | 1e+18    |
| 24        | 12        | 1e+18    |
| 24        | 13        | 1e+18    |
| 24        | 14        | 1e+18    |
| 24        | 15        | 1e+18    |
| 24        | 16        | 1e+18    |
| 24        | 17        | 1e+18    |
| 24        | 18        | 1e+18    |
| 24        | 19        | 1e+18    |
| 24        | 20        | 1e+18    |
| 24        | 21        | 1e+18    |
| 24        | 22        | 1e+18    |
| 24        | 23        | 1e+18    |
| 24        | 24        | 0.0      |
+-----------+-----------+----------+
Save results to a file or graph

To save the returned results as CSV files or write them to a graph, see EXPORT. Match the exported fields to the returned columns and target properties.