YIELD
YIELD
可以引导子句或语句:
YIELD
子句可以用于原生nGQL语句中,例如GO
、FETCH
或LOOKUP
。YIELD
语句可以在独立查询或复合查询中使用。
本文操作仅适用于原生nGQL。关于openCypher方式如何定义输出结果,请参见RETURN。
YIELD
在nGQL和openCypher中有不同的函数:
-
Note
nGQL不支持
CALL[…YIELD]
。 在nGQL中,
YIELD
和openCypher中的RETURN
类似。
Note
下文示例中的$$
、$-
等是引用符号,详情请参见。
-
nebula> GO FROM "player100" OVER follow \
YIELD properties($$).name AS Friend, properties($$).age AS Age;
+-----------------+-----+
| Friend | Age |
+-----------------+-----+
| "Tony Parker" | 36 |
| "Manu Ginobili" | 41 |
+-----------------+-----+
FETCH
语句中使用:LOOKUP
语句中使用YIELD
:nebula> LOOKUP ON player WHERE player.name == "Tony Parker" \
+-------------+-------------------------+------------------------+
| VertexID | properties(VERTEX).name | properties(VERTEX).age |
+-------------+-------------------------+------------------------+
| "player101" | "Tony Parker" | 36 |
+-------------+-------------------------+------------------------+
参数 | 说明 |
---|---|
DISTINCT | 聚合输出结果,返回去重后的结果集。 |
col | 要按返回的字段。如果没有为字段设置别名,返回结果中的列名为col 。 |
alias | col 的别名。使用关键字AS 进行设置,设置后返回结果中的列名为该别名。 |
conditions | 在WHERE 子句中设置的过滤条件。详情请参见WHERE。 |
在中,YIELD
语句可以接收、过滤、修改之前语句的结果集,然后输出。
# 查找player100关注的player,并计算他们的平均年龄。
nebula> GO FROM "player100" OVER follow \
YIELD dst(edge) AS ID \
| FETCH PROP ON player $-.ID \
YIELD properties(vertex).age AS Age \
| YIELD AVG($-.Age) as Avg_age, count(*)as Num_friends;
+---------+-------------+
| Avg_age | Num_friends |
+---------+-------------+
| 38.5 | 2 |
+---------+-------------+
YIELD
可以计算表达式并返回结果。
nebula> YIELD rand32(1, 6);
| rand32(1,6) |
+-------------+
| 3 |
+-------------+
nebula> YIELD "Hel" + "\tlo" AS string1, ", World!" AS string2;
| string1 | string2 |
+-------------+------------+
| "Hel lo" | ", World!" |
+-------------+------------+
nebula> YIELD hash("Tim") % 100;
+-----------------+
| (hash(Tim)%100) |
+-----------------+
| 42 |
+-----------------+
nebula> YIELD \
CASE 2+3 \
WHEN 4 THEN 0 \
WHEN 5 THEN 1 \
ELSE -1 \
END \
AS result;
+--------+
| result |
+--------+
| 1 |
+--------+