GoogleSQL for Spanner supports the following syntax to use GQL within SQL queries.
Language list
Name | Summary |
---|---|
GRAPH_TABLE operator
|
Performs an operation on a graph in the FROM clause of a SQL
query and then produces a table with the results.
|
GRAPH_TABLE
operator
FROM GRAPH_TABLE ( property_graph_name multi_linear_query_statement ) [ [ AS ] alias ]
Description
Performs an operation on a graph in the FROM
clause of a SQL query and then
produces a table with the results.
With the GRAPH_TABLE
operator, you can use the GQL syntax
to query a property graph. The result of this operation is produced as a table that
you can use in the rest of the query.
Definitions
property_graph_name
: The name of the property graph to query for patterns.multi_linear_query_statement
: You can use GQL to query a property graph for patterns. For more information, see Graph query language.alias
: An optional alias, which you can use to refer to the table produced by theGRAPH_TABLE
operator elsewhere in the query.
Examples
You can use the RETURN
statement to return specific node and edge properties.
For example:
SELECT name, id
FROM GRAPH_TABLE(
FinGraph
MATCH (n)
RETURN n.name AS name, n.id AS id
);
/*-----------+
| name | id |
+-----------+
| NULL | 7 |
| NULL | 16 |
| NULL | 20 |
| Alex | 1 |
| Dana | 2 |
| Lee | 3 |
+-----------*/
You can use the RETURN
statement to produce output with graph pattern
variables. These variables can be referenced outside GRAPH_TABLE
. For example,
SELECT n.name, n.id
FROM GRAPH_TABLE(
FinGraph
MATCH (n)
RETURN n
);
/*-----------+
| name | id |
+-----------+
| NULL | 7 |
| NULL | 16 |
| NULL | 20 |
| Alex | 1 |
| Dana | 2 |
| Lee | 3 |
+-----------*/
The following query produces an error because id
is not
included in the RETURN
statement, even though this property exists for
element n
:
SELECT name, id
FROM GRAPH_TABLE(
FinGraph
MATCH (n)
RETURN n.name
);
The following query produces an error because n
is a graph element and
graph elements can't be included as query output:
-- Error
SELECT n
FROM GRAPH_TABLE(
FinGraph
MATCH (n)
RETURN n
);