更新时间:2023-08-24 10:09:14

本小节会帮助用户了解和熟悉使用结构化数据增量更新图谱的具体操作步骤及限制说明。

 

步骤1: 准备工作

1. 用户需要在所有使用的数据表中添加“_timestamp”、“_action”字段。

  • 在数据库中添加以上字段的效果如下所示:

  • 在CSV文件中添加以上字段的效果如下所示:

字段 说明
_timestamp

统一设置为满足数据更新所需的时间格式即可。例如,以日为更新单位可设置为:yyyy-mm-dd,以分钟为更新单位可设置为: yyyy-mm-dd hh:mm

这里我们以秒为更新单位举例,在数据库中字段的时间格式为yyyy-mm-dd hh:mm:ss(将数据类型设置为TIMESTAMP可自动生成此格式;CSV文件需自定义为yyyy:mm:dd hh:mm:ss的格式),并填充完整的时间。

_action 需填充代表添加的upsert或表示删除的delete

 


注意:

  1. 第一次进行全量构建时,实体表和关系表中必须都有“_timestamp” 和“_action”字段,否则其第一次构建时的最大时间戳不会被保留,将不支持图谱进行增量构建(第一次构建“_timestamp”字段的具体时间无限制,格式正确即可;“_action”字段存在即可,不受填充值影响);
  2. 图谱增量更新时,“_timestamp”和“_action”字段的填充需严格按照上述固定格式填写,某行数据的对应字段如果未按格式填充(如存在格式错误、空值、拼写错误等),那么在进行增量构建时该条数据会被跳过。

 

2. 用户首次构建图谱时需选择“全量构建”更新方式。若用户选择“增量更新”,则在实际运行中仍按照“全量构建”的更新方式。

 


注意:

  1. 在流程5“知识映射”中,一个数据表只能映射一个实体类或一个关系类,否则可能导致数据混乱;
  2. 非结构化数据和结构化数据不能在同一个任务中进行增量更新(可通过分组进行增量更新)。

 

3. 更新结构化数据。

  • 若用户想要对实体类/关系类的数据进行添加或删除操作,则需要同时修改“_timestamp” 字段值和“_action”字段值:
字段 情况 操作

_timestamp” 字段值

无变化或早于上一次构建的最大时间戳 跳过该数据
晚于上一次构建的最大时间戳 数据正常增量构建
其他 跳过该数据

_action”字段值

upsert 增加或更新数据
delete 删除数据
其他 跳过该数据
  • 若用户不需要对原有行的数据进行修改,则无需修改这两个字段的对应值。
  • 用户修改AS结构化数据后重新上传时:
    1. 若用户选择“上传并替换...”,则知识图谱原有配置保持不变。
    2. 若用户选择“同时保留2个文档...”,则需要在流程4“知识抽取”中添加新保存的文档,并在流程5中同步修改相关实体类/关系类映射。

 


注意:

每次进行增量更新时使用的数据源时间戳,必须较该实体类/关系类在上一次使用数据表中的最大时间戳大于1秒,否则会导致部分数据丢失。


 

步骤2:使用结构化数据增量更新图谱

1. 数据更新完成后,用户可以在图谱列表顶部选择【运行】>【立即运行】按钮。

2. 单击【增量更新】,对图谱进行增量更新。待图谱状态为“完成”时,则表示该图谱增量更新成功。

 

功能限制说明

1. 实体表和关系表必须有字段“_timestamp”和“_action”,否则不支持增量更新图谱。

2. 使用结构化数据增量更新图谱时不支持json格式的数据源。

3. 若非结构化数据源和结构化数据源在同一个增量更新任务中,则不能进行增量更新。

4. 若流程6“融合”中的属性的值发生改变,会导致图谱的vid发生变化,则直接进行增量更新时会产生多余的重复数据。因此,用户在改变实体类融合属性后需重新进行全量构建,使用当前数据重建图谱。

5. 实体类/关系类每次进行增量更新时使用的数据源时间戳必须较上一次构建使用数据的最大时间戳至少大于1秒,否则会导致部分数据丢失。

6. 增量更新对数据源的限制:

  • 不支持两条关系使用同一个关系数据表,因为两条关系的数据不一定会保持同步的action(如下图,关系“A2B” 与关系“B2C” 不可映射同一个数据表)。

  • 不支持一个数据表既映射一个实体,又映射一条关系,此时若想删除关系的数据、保留实体数据时会存在冲突(如下图,实体“B” 与关系“A2B”不可映射同一个数据表)

 

“增量更新”自动转为“全量构建”情况说明

1. 如果之前的构建都没有成功过,则自动转为全量构建。

2. 如果任务分组中有实体类或关系类的数据表中缺少字段“_timestamp” 或“_action” ,则自动转为全量构建。

3. 如果“graph_task_table”表中存储的最大时间戳不存在或为空(即第一次构建时,实体类或关系类的数据表中“_timestamp”和“_action”字段存在不全),则自动转为全量构建。