NebulaGraph的Jupyter扩展
项目描述
https://github.com/wey-gu/jupyter_nebulagraph/assets/1651790/10135264-77b5-4d3c-b68f-c5810257feeb
jupyter_nebulagraph
,原名ipython-ngql
,是一个Python包,简化了从Jupyter Notebooks或iPython环境连接到NebulaGraph的过程。它通过简化Jupyter Notebooks的创建、调试和共享来提升用户体验。使用jupyter_nebulagraph
,用户可以轻松连接到NebulaGraph,加载数据,执行查询,可视化结果,并微调查询输出,从而提高协作效率和生产力。
入门指南
pip install jupyter_nebulagraph
在Jupyter Notebook或iPython中加载扩展
%load_ext ngql
%ngql --address 127.0.0.1 --port 9669 --user root --password nebula
执行查询
%ngql USE basketballplayer;
%ngql MATCH p=(v:player)-->(v2:player) WHERE id(v) == "player100" RETURN p;
绘制图形
%ng_draw
通过在Google Colab上实验jupyter_nebulagraph
的功能来发现其功能。您还可以在此文档中访问类似的Jupyter Notebook。
有关详细指南,请参阅官方文档。
功能 | 快捷参考卡 | 示例 | 命令文档 |
---|---|---|---|
连接 | %ngql --address 127.0.0.1 --port 9669 --user user --password password |
连接 | %ngql |
从CSV加载数据 | 使用 %ng_load --source actor.csv --tag player --vid 0 --props 1:name,2:age --space basketballplayer 加载数据 |
加载数据 | %ng_load |
查询执行 | %ngql MATCH p=(v:player{name:"Tim Duncan"})-->(v2:player) RETURN p; |
查询执行 | %ngql 或 %%ngql (多行) |
结果可视化 | %ng_draw |
绘制图形 | %ng_draw |
绘制模式 | %ng_draw_schema |
绘制模式 | %ng_draw_schema |
调整查询结果 | df = _ 获取最后查询结果作为 pd.dataframe 或 ResultSet |
调整结果 | 配置 ngql_result_style |
点击查看更多!
安装
jupyter_nebulagraph
可以通过 pip 安装或从本 git 仓库本身安装。
通过 pip 安装
pip install jupyter_nebulagraph
在仓库内安装
git clone git@github.com:wey-gu/jupyter_nebulagraph.git
cd jupyter_nebulagraph
python setup.py install
在 Jupyter Notebook 或 iPython 中加载
%load_ext ngql
连接到 NebulaGraph
连接 NebulaGraph 数据库实例需要以下参数
参数 | 描述 |
---|---|
--address 或 -addr |
NebulaGraph 实例的 IP 地址 |
--port 或 -P |
NebulaGraph 实例的端口号 |
--user 或 -u |
用户名 |
--password 或 -p |
密码 |
以下是一个连接到 127.0.0.1:9669
,用户名为 "user",密码为 "password" 的示例。
%ngql --address 127.0.0.1 --port 9669 --user user --password password
执行查询
现在支持两种 iPtython 魔法
选项 1:使用 %ngql
的一行样式
%ngql USE basketballplayer;
%ngql MATCH (v:player{name:"Tim Duncan"})-->(v2:player) RETURN v2.player.name AS Name;
选项 2:使用 %%ngql
的多行样式
%%ngql
SHOW TAGS;
SHOW HOSTS;
带有变量的查询字符串
jupyter_nebulagraph
支持通过 Jinja2 模板框架从本地命名空间获取变量,它支持如下示例中的查询。
实际的查询字符串应该是 GO FROM "Sue" OVER owns_pokemon ...
,并且通过消耗本地变量 trainer
将 "{{ trainer }}"
渲染为 "Sue"
。
In [8]: vid = "player100"
In [9]: %%ngql
...: MATCH (v)<-[e:follow]- (v2)-[e2:serve]->(v3)
...: WHERE id(v) == "{{ vid }}"
...: RETURN v2.player.name AS FriendOf, v3.team.name AS Team LIMIT 3;
Out[9]: RETURN v2.player.name AS FriendOf, v3.team.name AS Team LIMIT 3;
FriendOf Team
0 LaMarcus Aldridge Trail Blazers
1 LaMarcus Aldridge Spurs
2 Marco Belinelli Warriors
绘制查询结果
绘制最后查询
在带有图形数据的查询后调用 %ng_draw
。
# one query
%ngql GET SUBGRAPH 2 STEPS FROM "player101" YIELD VERTICES AS nodes, EDGES AS relationships;
%ng_draw
# another query
%ngql match p=(:player)-[]->() return p LIMIT 5
%ng_draw
绘制查询
或者使用 %ng_draw <one_line_query>
,%%ng_draw <multiline_query>
来代替绘制最后查询的结果。
一行查询
%ng_draw GET SUBGRAPH 2 STEPS FROM "player101" YIELD VERTICES AS nodes, EDGES AS relationships;
多行查询
%%ng_draw
MATCH path_0=(n)--() WHERE id(n) == "p_0"
OPTIONAL MATCH path_1=(n)--()--()
RETURN path_0, path_1
绘制图形模式
%ng_draw_schema
从CSV加载数据
使用 ng_load_csv
魔法,可以在 NebulaGraph 中加载数据。
例如,将 actor.csv
文件中的数据加载到名为 basketballplayer
的空间中,标签为 player
,vid 在列 0
,属性在列 1
和 2
。
"player999","Tom Hanks",30
"player1000","Tom Cruise",40
"player1001","Jimmy X",33
只需运行以下行
%ng_load --source actor.csv --tag player --vid 0 --props 1:name,2:age --space basketballplayer
其他示例
# load CSV from a URL
%ng_load --source https://github.com/wey-gu/jupyter_nebulagraph/raw/main/examples/actor.csv --tag player --vid 0 --props 1:name,2:age --space demo_basketballplayer
# with rank column
%ng_load --source follow_with_rank.csv --edge follow --src 0 --dst 1 --props 2:degree --rank 3 --space basketballplayer
# without rank column
%ng_load --source follow.csv --edge follow --src 0 --dst 1 --props 2:degree --space basketballplayer
调整查询结果
默认情况下,查询结果是一个 Pandas Dataframe,我们可以通过从变量 _
读取来访问它。
In [1]: %ngql MATCH (v:player{name:"Tim Duncan"})-->(v2:player) RETURN v2.player.name AS Name;
In [2]: df = _
还可以配置将结果放在原始 ResultSet 中,以启用方便的 NebulaGraph Python 应用程序开发。
更多请参阅 文档:结果处理
速查表
如果您发现自己忘记了命令或不想完全依赖速查表,请记住这一点:通过帮助命令寻求帮助!
%ngql help
致谢 ♥️
- 此项目的灵感来自 ipython-sql,感谢 Catherine Devlin。
- 图形可视化功能由 pyvis 实现,由 WestHealth 提供。
- 由 Vesoft Inc. 和 NebulaGraph 社区 提供慷慨的赞助和支持。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。