0

我正在使用agensgraph,但我不知道如何编写混合查询,agensgraph 中的任何混合查询示例都会有很大帮助。

4

3 回答 3

1

我在这些幻灯片中找到了有关混合查询语言的更多信息。我能找到的所有其他信息都与 Eya 在不同地方发布的相同示例。

我同意有关 AgnsGraph 中混合查询的更多信息会很棒,因为它似乎是软件的杀手级功能。

于 2019-08-20T21:23:09.310 回答
1

在 AgensGraph 中,您可以通过两种方式编写混合查询:

假设您正在创建以下内容:

CREATE GRAPH AG;
CREATE VLABEL dev;
CREATE (:dev {name: 'someone', year: 2015});
CREATE (:dev {name: 'somebody', year: 2016});

CREATE TABLE history (year, event)
AS VALUES (1996, 'PostgreSQL'), (2016, 'AgensGraph');

1- SQL 中的密码

Syntax:
SELECT [column_name]
FROM ({table_name|SQL-query|CYPHERquery})
WHERE [column_name operator value];

Example:
SELECT n->>'name' as name 
FROM history, (MATCH (n:dev) RETURN n) as dev 
WHERE history.year > (n->>'year')::int;

结果: 姓名----某人(1行)

2- 密码中的 SQL

Syntax:
MATCH [table_name]
WHERE (column_name operator {value|SQLquery|CYPHERquery})
RETURN [column_name];

Example:
MATCH (n:dev)
WHERE n.year < (SELECT year FROM history WHERE event = 
'AgensGraph')
RETURN properties(n) AS n;

结果: n ---- {"name": "someone", "year": 2015}(1 行)

您可以在这里找到更多信息

于 2019-05-16T20:14:20.530 回答
0

假设我们有一个网络管理系统,并且我们将网络拓扑保存在 AgensGraph(图形格式)的图形部分中,并将我们的时间序列数据(例如有关特定设备的日期和时间信息)保存在 AgensGraph 的关系部分(表格式)。因此,在这种情况下,我们知道我们有一个图、表,如果需要,我们可以编写一个混合查询来从两个模型中获取数据。

在我们的图表中,我们有不同的设备相互连接,例如调制解调器、物联网传感器等。对于这些设备中的每一个,我们还分别存储在表格中的一些信息 - 与这些设备相关,例如下载速度、上传速度或 CPU 使用率。

在以下混合查询中,我们的目标是通过同时从图和表中查询来收集有关特定设备的信息。

SQL 中的密码

在这个混合查询中,我们正在寻找有问题的调制解调器设备,它们的异常类型为 2(2 表示该设备在下载和上传速度方面存在一些问题),在我们找到这些设备后,我们的目标是返回他们的 ID、下载和上传速度以调查问题。正如您在以下查询中看到的,我们的内部查询是 Cypher,我们的外部查询是 SQL。

SELECT id,sysdnbps, sysupbps
from public.modemrdb where to_jsonb(id) in
(SELECT id FROM (MATCH(m:modem) where 
m.abnormaltype=2
return m.name)
AS s(id)); 

密码中的 SQL

在这个混合查询中,我们希望找到 CPU 使用率超过 80(不在阈值范围内)的调制解调器设备,这表明这些设备存在问题,在我们找到这些设备后,我们的目标是返回该调制解调器以及连接到它们的任何物联网设备。正如您在以下示例中看到的,我们的内部查询是 SQL,我们的外部查询是 Cypher。

MATCH p=(n:modem)-[r*1..2]->(iot)
WHERE n.name in
(SELECT to_jsonb(id)
FROM public.modemrdb
WHERE syscpuusage >= 80)
RETURN p;

这可以是混合查询的另一个示例。

于 2019-08-22T00:46:32.653 回答