GQL within SQL
Stay organized with collections
Save and categorize content based on your preferences.
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:
SELECTname,id
FROMGRAPH_TABLE(
FinGraph
MATCH(n:Person)
RETURNn.nameASname,n.idASid
);
/*-----------+
| name | id |
+-----------+
| 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,
SELECTn.name,n.id
FROMGRAPH_TABLE(
FinGraph
MATCH(n:Person)
RETURNn
);
/*-----------+
| name | id |
+-----------+
| Alex | 1 |
| Dana | 2 |
| Lee | 3 |
+-----------*/
The following query produces an error because id
isn't
included in the RETURN
statement, even though this property exists for
element n
:
SELECTname,id
FROMGRAPH_TABLE(
FinGraph
MATCH(n:Person)
RETURNn.name
);
The following query produces an error because directly outputting the graph
element n
is not supported. Convert n
to its JSON representation using the
SAFE_TO_JSON
for successful output.
-- Error
SELECTn
FROMGRAPH_TABLE(
FinGraph
MATCH(n:Person)
RETURNn
);
SELECTSAFE_TO_JSON(n)asjson_node
FROMGRAPH_TABLE(
FinGraph
MATCH(n:Person)
RETURNn
);
/*---------------------------+
| json_node |
+---------------------------+
| {"identifier":"mUZpbk...} |
| {"identifier":"mUZpbk...} |
| {"identifier":"mUZpbk...} |
+--------------------------*/