0

我正在尝试创建一个 TigerGraph 加载作业以使用标题行中的列名而不是 $1、$2 等位置参数。为了使用 TigerGraph 服务器外部的文件,我相信我们需要指定 HEADER 和 INPUT_LINE_FILTER 并使用它们在装载作业中。但是,我在 TigerGraph 文档中找不到任何示例。我在下面的尝试现在正在工作。

任何帮助表示赞赏。

result = conn.gsql('''
USE GRAPH MyGraphCopy 

BEGIN
CREATE LOADING JOB load_persons_byname FOR GRAPH MyGraphCopy {
      DEFINE FILENAME MyDataSource;
      DEFINE HEADER MyHeader = "id","name","email","username","created_at","v_id";
      DEFINE INPUT_LINE_FILTER reject_header = ( "created_at " = "created_at");
      LOAD MyDataSource TO VERTEX Person VALUES($"v_id", $"name", $"email", $"username", $"created_at") USING SEPARATOR=",", HEADER="true", USER_DEFINED_HEADER=MyHeader, REJECT_LINE_RULE=reject_header, EOL="\n", QUOTE="double";
    }
END
''')
4

2 回答 2

0

这就是我能够让它工作的方式。

USE GRAPH MyGraph

BEGIN
CREATE LOADING JOB load_persons_byname FOR GRAPH MyGraphCopy {
      DEFINE FILENAME MyDataSource;
      DEFINE HEADER MyHeader = "id","name","email","username","created_at","v_id";
      DEFINE INPUT_LINE_FILTER reject_header = ( $4 == "created_at");
      LOAD MyDataSource TO VERTEX Person VALUES($"v_id", $"name", $"email", $"username", $"created_at") USING SEPARATOR=",", HEADER="true", USER_DEFINED_HEADER="MyHeader", REJECT_LINE_RULE=reject_header, EOL="\n", QUOTE="double";
    }
END
于 2022-02-09T21:31:18.670 回答
0

尝试删除DEFINE HEADERDEFINE INPUT_LINE_FILTER线。如果您正在从 CSV 读取,则只需使用header="true"; 这应该足以在不做任何其他事情的情况下获得列名的引用。

此外,请确保指定您尝试使用的文件的名称和位置为MyDataSource. 这是一个示例,其中文件名是file1

CREATE LOADING JOB load_social FOR GRAPH social {
   DEFINE FILENAME file1="/home/tigergraph/personAndFriendship.csv";

   LOAD file1 TO VERTEX person VALUES ($"name", $"name", $"age", $"gender", $"state") WHERE NOT ($"age" IS EMPTY) USING header="true", separator=",";
   LOAD file1 TO EDGE friendship VALUES ($0, $1, $5) USING header="true", separator=",";
}

另外,请参阅官方 TG 加载作业文档

于 2021-12-20T19:41:23.967 回答