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 propertiesidandrating. - Relationships are represented by edges of type
Link, with propertyweight.
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:
- Collect all node IDs into
vertex_ids; initialize each node'sdistmap with direct edge weights and infinity for unreachable pairs. - Iterate over each node as Floyd-Warshall pivot (
mid_id): load the pivot's distance row intok_row. - 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]). - 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¶
-
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) } ''' -
Download these CSV files and save them with their original names in
examples/algorithms/all_pairs_shortest_path/under your deployment directory:- all_pairs_shortest_path_node.csv: Node data.
- all_pairs_shortest_path_edge.csv: Edge data.
Preview the CSV files
all_pairs_shortest_path_node.csvid,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,1all_pairs_shortest_path_edge.csvsrc_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 -
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_countis24. 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.