GQL within SQL

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 the GRAPH_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...} |
 +--------------------------*/

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2025年10月13日 UTC.