blob: d0d969eafce59619bf28eb0f59dcee84ce06a22f [file] [log] [blame] [view]
## Using SQL for Graph Queries
### Joining Vertices and Edges in a Graph with SQL
1. Run the shell to submit the pre-edited demo GQL:
```shell
bin/gql_submit.sh --gql geaflow/geaflow-examples/gql/sql_join_to_graph_demo.sql
```
Here, `sql_join_to_graph_demo.sql` is an SQL Join query in a simulated streaming graph. Its key content is as follows:
```sql
USE GRAPH dy_modern;
select u.name, friend.name
from person u, knows e, person friend
where u.id = e.srcId and e.targetId = friend.id
;
```
This DSL reads node and edge data from the **demo_job_data.txt** resource file within the project to construct the graph.
Then, it performs a join query on nodes and edges of the graph `dy_modern`. The engine automatically translates the join semantics into a graph query.
2. Output Results
You can print the contents of the result file by running the following command:
```shell
cat /tmp/geaflow/sql_join_to_graph_demo_result/partition_0
```
The query results are written to `/tmp/geaflow/sql_join_to_graph_demo_result` by default. Users can also customize the output path by modifying the `geaflow.dsl.file.path` parameter.
```
jim,jim
kate,kate
lily,lily
lucy,lucy
jim,jim
lucy,lucy
lucy,lucy
jack,jack
```
## Using SQL to Perform Join and Aggregate Queries on Graph Vertices and Edges
1. Run the shell to submit the pre-edited demo GQL:
```shell
bin/gql_submit.sh --gql geaflow/geaflow-examples/gql/sql_join_to_graph_demo_02.sql
```
The key content of the `sql_join_to_graph_demo_02.sql` file is as follows:
```sql
USE GRAPH dy_modern;
SELECT u.name,
friend_num
FROM person u,
(
SELECT srcId AS pid,
COUNT(DISTINCT targetId) AS friend_num
FROM knows
GROUP BY srcId
) t_friend_num
WHERE u.id = pid;
```
This DSL reads node and edge data from the **demo_job_data.txt** resource file within the project to construct the graph.
Then, it performs a join query on nodes and edges of the graph `dy_modern`. The engine automatically translates the join semantics into a graph query.
2. Output Results
You can print the contents of the result file by running the following command:
```shell
cat /tmp/geaflow/sql_join_to_graph_demo_02_result/partition_0
```
The query results are written to `/tmp/geaflow/sql_join_to_graph_demo_02_result` by default. Users can also customize the output path by modifying the `geaflow.dsl.file.path` parameter.
The results show the number of friends recorded for each person in the graph:
```
lucy,2
jim,1
kate,1
lily,1
jack,1
```