将数据映射到图
Last updated
Last updated
创建图模型后,接下来的步骤就是将需要分析的数据映射到图模型中。点击左侧菜单栏中的“Map Data To Graph”链接可以打开数据映射页面。该页面由左右两个部分组成。在未建立任何数据映射前,左面板会默认显示当前的图模型。
数据映射的步骤主要包括了四步:
添加(一个或多个)数据源
将(一个或多个)数据源映射到点类或边类上
将数据源中的数据列映射到点类或边类的字段上
发布数据映射
第一次打开该窗口时文件列表中无任何源数据文件。
单个数据文件的大小限制为500MB以内。但如果你的TigerGraph是本地部署的话,也可以通过下面的方法绕过该限制:直接将数据文件或该文件的快捷方式放置到TigerGraph的数据文件目录中。目录地址为:<TigerGraph_root_dir>/loadingData
当数据文件传送完毕后,它就会出现在左侧的文件列表中。
源数据文件必须是.csv格式
系统只接受".csv”文件的上传。如果你手动将文件复制到 <TigerGraph_root_dir>/loadingData 目录中,请注意不要建立任何子目录,因为系统不会读取子目录中的内容。
在这一步中,你需要告诉GraphStudio如何解析你的源数据文件。如果你的源数据文件是表格格式的话,则解析器会自动将每一行数据分割为数个令牌(token)。在文件列表中选中需要解析的文件,TigerGraph会在后端自动按照文件内容实时解析,并在窗口右侧生成一个解析结果的预览。
如果解析的结果不正确,你需要在对应的下拉菜单中选择正确的文件格式、分隔符以及行末符;每次修改这些参数后,数据文件都会在第一时间重新解析。引用字符(enclosing character)表示在令牌两端用于标识引用的一对字符。例如,假设你选择的分隔符是逗号(,),但你在某些字符串中包含了逗号,则你可以选择单引号或者双引号作为令牌的引用符号,从而标记出某个令牌的开始处和结束处。如果每个令牌都已经有了自己的引用字符,则该选项无须设置。解析器会在遇到这些引用字符时自动识别出它们。
选中某个源数据文件,选中后该文件上会出现一条提示:
接下来,选取需要映射到的点类或边类,随后在该源文件与对应的点类或边类之间会出现一条虚线箭头。
同时,如果目标点类/边类此时还未建立对其Primary ID的映射,则上方会出现一条红色的提示。
在这一步中,你需要将数据源中的某个列与对应点类或边类中的特定ID或属性连接起来。首先,选中一个介于数据源和点类/边类之间的数据映射(即图中的绿色的虚线箭头)。选中后,该箭头会变为橙色(即处于待编辑状态),右侧的面板中也会随之出现两张表格。左侧的表格显示源数据中的每一列,并列出该列中的第一行令牌作为示例;右侧的表格则显示出选中点类或边类的特定字段。如果是点类,则这里显示的是primary id或属性;如果是边类,则这里显示的是该边类的起始点类,目标点类以及属性。
映射方法如下:首先选中左侧数据列表格中的一行:
然后选择右侧表格中的需要映射到的字段。此时,两者间会出现一条绿色的箭头。重复以上操作可以完成所有字段的映射。由于系统支持多对一的映射,所以并不需要在每一个点类/边类的字段都建立映射关系。
GraphStudio提供一系列内置的函数帮助用户在导入数据之前预处理源数据。例如,我们可以将源数据中的两列合并,然后再将其映射为某个点类或边类的属性。本小节中,我们将详细介绍如何使用这些函数。
随后,一个令牌函数表会出现在属性映射面板中。你可以拖动任何一个表格来调整它的位置。令牌函数相当于在每个映射中扮演中介的角色。你可以先将源数据映射到令牌函数上,然后再将令牌函数映射到目标点类/边类上。最终的效果如下:
有时,用户需要将一个常数映射到某个id或属性上。这里我们将介绍如何实现该功能:
在窗口的右工作区内,双击所要配置的ID或属性(即点击右侧表格的左列)。例如下面的例子中,我们双击“label”这个属性:
随后“加载常数”窗口会自动打开。输入你需要的常数,然后点击ADD按钮保存配置。
随后属性label会变成 id / 属性 = “(常数)” 的格式。
如果需要修改或删除某个常数赋值,只需要重新双击该id或属性,并在弹出的窗口中删除对应的值即可。删除完成后,点击ADD按钮保存设置。
首先添加令牌函数。然后选择该令牌函数中需要配置常数的输入值(即双击令牌函数表中的左列)。在下面的示例中,我们双击了”Input 0“。
在弹出的配置窗口中输入一个常数,然后点击ADD保存配置。此时,该输入值的标签会显示为 Input = “(常数)” 的格式。
如需修改或删除该常数,只需要重新双击该标签并在弹出的窗口中将其删除即可。
你可以在数据映射中添加数据筛选条件,使得只有满足条件的数据才会被导入。它的功能等效于在GSQL命令中的WHERE条件判断子句。
在数据映射中,系统允许添加过滤规则且该规则只能作用于本映射。下面是一个例子:
第一部分是源数据文件中的某一行,系统显示这行数据作为范例便于用户参考。
中间的部分显示了当一个筛选条件被转换为GSQL的WHERE子句时的具体内容。有关WHERE子句的具体格式,请参考GSQL语言使用手册 第一部分 - 定义图以及加载数据中的WHERE子句部分。
最下方的部分用于编写筛选条件。写好的条件代码会自动在中间部分实时转换成等效的WHERE子句。
筛选条件必须是一个布尔表达式并内嵌了一系列条件判断。GraphStudio会根据该表达式的内容自动分析源数据的每一行。只有某行数据经过条件判断后结果为”真“,它才会被加载到数据库中。
首先,展开“Build Data Filter”菜单(默认值为“None”),这其中会列出许多表达式的模板。你可以从中选取你所需要的表达式。如果想要编写嵌套结构的表达式,则请从最外层开始编写。菜单中最先列出的是大小判断表达式的模板。
除此之外,还有逻辑判断表达式的模板,包括AND,OR,NOT,IN,BETWEEN...AND,IS NUMERIC和IS EMPTY的模板。
请注意,每个表达式中都包含一、二、三或数个操作数,而这些操作数本身也可以成为表达式。当你选中一个表达式模板后会弹出一个新的窗口,让你选择操作数的表达式。操作数的选择需要基于上下文,但通常它们会包括:
一个源数据文件中的数据列
一个常数
如果运算符为AND,OR或NOT,则该操作数也可以是另一条条件判断。这也是表达式嵌套的实现方法。
假设你现在需要向边类“friendship”中导入数据字段:person1, person2和friendship_start_date,而同时你又希望导入的数据只包括person1是Tom且友谊开始时间不晚于2017年6月10日,则该筛选条件可以写为:
添加该筛选条件后,右工作面板的显示变为:
若要删除某个筛选条件,只需要在编辑窗口中最上层的菜单中选择“None”即可。
选中某条需要删除的绿色虚线箭头,然后点击删除按钮。
选中某条源数据列与对应点类/边类属性之间的绿色实线箭头,然后点击删除按钮。
选中令牌函数表格,然后点击删除按钮
默认情况下,两个工作区的面积是相同的。点击左侧或右侧的按钮可以分别扩大左侧或右侧工作区的面积。
在这一步中,你需要告诉GraphStudio源数据的位置。数据源应该是一个结构化的数据文件,并且可以被导入到图数据库中用于生成点或边的实例。导入数据时,我们需要首先提供数据文件的地址。点击按钮 打开数据源添加窗口:
点击按钮 ,在弹出的窗口中选择你要上传的文件后点击确定。随后该文件会被上传到服务器中。
在解析结果符合要求后,点击按钮 将这些数据导入左工作面板中。此时,该数据源会显示为一个文件:
当你不再需要某个数据文件时,你可以点击将其从服务器中删除 。需要注意的是,你需要同时手动删除所有用到该文件的数据映射,否则你将会在加载数据的时候收到“文件不存在”错误。
在这一步中,你需要将一个数据文件与某个点类或边类相连(即映射)。数据映射可以是多对多的,即同一条数据可以映射到多个点类或边类,多条源数据也可以映射到同一个点类或边类。点击按钮 打开“将数据映射到点类或边类”窗口。 在完成所有编辑后再次点击该按钮可退出数据映射的编辑模式。
首先点击按钮 添加令牌函数。 在弹出窗口的下拉菜单中可以浏览并选择你要的函数。对于某些函数来说,你可能需要设置输入参数的个数。(大多数令牌函数的输入参数个数都是固定的;而gsql_concat则可以接受任意正整数个输入参数。)选定后,点击ADD。
如果源数据的列名与对应点类/边类的属性名十分近似(所谓近似,指的是两者只有大小写或有无短线的区别)的话,你可以点击按钮 尝试自动映射功能。所有近似的列都会自动完成映射。
默认情况下,数据映射是没有条件过滤的。点击 可以打开筛选条件编辑窗口。该编辑窗口由三个部分组成:
将鼠标悬停在筛选条件图标 上会弹出筛选条件的具体细节。双击该图标或再次点击数据筛选条件按钮 可以重新编辑该过滤规则。
在数据映射页面中,你可以将任何添加过的元素删除。删除操作很简单,你只需要选中任何你想删除的元素并点击按钮 即可。按住Shift键可以一次选中多个元素并将其一次删除。但是请注意:在本页面中无法删除点类或边类本身。
选中某个源数据文件,然后点击删除按钮 。
你可以点击后退或前进按钮 来退回到上一步或重做最近回退的那一步。系统会记录你在进入本数据映射页面后的每一步操作。
当你完成所有上述步骤后,点击发布按钮 可将该数据加载作业导入TigerGraph系统。每发布一条数据源文件映射约需要2到3秒钟。
你可以通过这三个按钮 调整左右两个工作区的面积。